انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: PunkGeek در 07 تیر 1393، 01:20 بظ
-
سلام دوستان
نیاز به یه شل اسکریپت ساده دارم که هر وقت اجرا میشه ایپی و گتوی و نت ماسک رو دریافت کنه و جایگزینه ایپی موجود در فایل interface کنه
خیلی ممنونم
-
- من اوبونتو ندارم ،اگه آدرس فایل و یک نمونه از محتویاتش رو بزارید ،انجامش میدم براتون.
-
- من اوبونتو ندارم ،اگه آدرس فایل و یک نمونه از محتویاتش رو بزارید ،انجامش میدم براتون.
خیلی ممنونم
/etc/network/interfaces
محتویاتشم اینه:
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).
# The loopback network interface
# auto lo
# iface lo inet loopback
# The primary network interface
auto eth0:0
iface eth0:0 inet static
address 107.6.174.246
netmask 255.255.255.192
gateway 107.6.174.193
auto eth0:1
iface eth0:1 inet static
address 192.168.1.3
netmask 255.255.255.0
gateway 192.168.1.1
فقط یه نکته مهم اینه که eth0:1 نباید تغییر کنه
فقط eth0:0 رو باید تغییر بده
-
- شرمنده چیزی به ذهنم نمیاد الان ،فکر میکردم مثل سیستم عامل خودم هر interface فایلش جداست که با یک sed راحت حل میشه. :(
-
- شرمنده چیزی به ذهنم نمیاد الان ،فکر میکردم مثل سیستم عامل خودم هر interface فایلش جداست که با یک sed راحت حل میشه. :(
فدورا میشد، حالا شما اگر امکانش هست sed رو بنویسید من یه فکری به حالش مکنم
-
- مبتدیانه است ولی همچین چیزی به ذهنم رسید (این کانفیگ فدوراست) ::)
#!/bin/bash
path="/home/elyas/my_scripts/aaa"
echo "enter ip :"
read ip
echo "enter netmask :"
read netmask
echo "enter gateway :"
read gateway
echo "TYPE=Ethernet" | tee $path
echo "BOOTPROTO=dhcp"| tee -a $path
echo "DEFROUTE=yes"| tee -a $path
echo "NAME=wire"| tee -a $path
echo "UUID=632f0667-56c9-481d-8203-7782af54af2a"| tee -a $path
echo "ONBOOT=yes"| tee -a $path
echo "HWADDR=20:89:84:FB:74:1E"| tee -a $path
echo "PEERDNS=yes"| tee -a $path
echo "PEERROUTES=yes"| tee -a $path
echo "IPADDR=$ip"| tee -a $path
echo "NETMASK=$netmask"| tee -a $path
echo "GATEWAY=$gateway"| tee -a $path
- راستی چرا با ifconfig کار نمیکنید؟
ifconfig wlp3s0 172.20.1.50 netmask 255.255.255.0
-
- مبتدیانه است ولی همچین چیزی به ذهنم رسید (این کانفیگ فدوراست) ::)
#!/bin/bash
path="/home/elyas/my_scripts/aaa"
echo "enter ip :"
read ip
echo "enter netmask :"
read netmask
echo "enter gateway :"
read gateway
echo "TYPE=Ethernet" | tee $path
echo "BOOTPROTO=dhcp"| tee -a $path
echo "DEFROUTE=yes"| tee -a $path
echo "NAME=wire"| tee -a $path
echo "UUID=632f0667-56c9-481d-8203-7782af54af2a"| tee -a $path
echo "ONBOOT=yes"| tee -a $path
echo "HWADDR=20:89:84:FB:74:1E"| tee -a $path
echo "PEERDNS=yes"| tee -a $path
echo "PEERROUTES=yes"| tee -a $path
echo "IPADDR=$ip"| tee -a $path
echo "NETMASK=$netmask"| tee -a $path
echo "GATEWAY=$gateway"| tee -a $path
- راستی چرا با ifconfig کار نمیکنید؟
ifconfig wlp3s0 172.20.1.50 netmask 255.255.255.0
به نظرتون اگه فایل interfaces رو پاک کنه و اخر کار اون سه تادخط رو اکو بدم چطوره؟
ممنونم بابت شل
-
- اینجور که از فایل شما دیده میشه شما با interface های alias هم کار میکنید، که ممکنه لیستتون کم یا زیاد بشه ،ولی اگه یک لیست ثابت دارین خوبه.
به نظرتون اگه فایل interfaces رو پاک کنه و اخر کار اون سه تادخط رو اکو بدم چطوره؟
- اینم آدرسی که تحت عنوان path میگیره رو پاک میکنه ( چون اولین دستور tee ، نداره append-- رو ) ،و محتویاتی که میخواید رو میتونید اکو کنید ،اگه همیشه فایل به یک شکله.
-
- اینجور که از فایل شما دیده میشه شما با interface های alias هم کار میکنید، که ممکنه لیستتون کم یا زیاد بشه ،ولی اگه یک لیست ثابت دارین خوبه.
به نظرتون اگه فایل interfaces رو پاک کنه و اخر کار اون سه تادخط رو اکو بدم چطوره؟
- اینم آدرسی که تحت عنوان path میگیره رو پاک میکنه ( چون اولین دستور tee ، نداره append-- رو ) ،و محتویاتی که میخواید رو میتونید اکو کنید ،اگه همیشه فایل به یک شکله.
eth0:1 ثابت هستش
-
با تشکر فراوان، اسکریپتی که دادید جواب داد
فقط یه موردی چطور باید کاری کنم که خروجی رو نشون نده؟
و اینکه با هر بار لاگین کردن یوزر روت، اسکریپت خودکار اجرا بشه و در صورت کنسل کردن (ctrl + c) یوزر روت هم لاگ اوت بشه؟
-
میشه بگی این کدها رو برای چه کاری میخوای؟
-
میشه بگی این کدها رو برای چه کاری میخوای؟
برای یه ماشین مجازی که ایپی رو غیر از interfaces داخل چند تا فایل php هم باید ست کنه و یه سری چیز های دیگه مثل پسورد و ...
در اصل یه پنلی هست برای esxi فعلا آماده نشده هنوز
فقط نمیدونم چرا این کد که نوشتم کار نمیده
echo "Enter Password For Root:"
read pass
echo -e "$pass\n$pass\n"| passwd root
-
- برای این که کد خروجی نداشته باشه از این استفاده کنید :
#!/bin/bash
path="/home/elyas/my_scripts/aaa"
echo "enter ip :"
read ip
echo "enter netmask :"
read netmask
echo "enter gateway :"
read gateway
echo "TYPE=Ethernet" > $path
echo "BOOTPROTO=dhcp">> $path
echo "DEFROUTE=yes">> $path
echo "NAME=wire">> $path
echo "UUID=632f0667-56c9-481d-8203-7782af54af2a">> $path
echo "ONBOOT=yes">> $path
echo "HWADDR=20:89:84:FB:74:1E">> $path
echo "PEERDNS=yes">> $path
echo "PEERROUTES=yes">> $path
echo "IPADDR=$ip">> $path
echo "NETMASK=$netmask">> $path
echo "GATEWAY=$gateway">> $path
- برای این که این اسکریپت با لاگین روت اجرا بشه اون رو در یک فایل قابل اجرا در یکی از فولدر های داخل متغیر PATH کپی کنید یا آدرس پوشه خودتون رو به PATH اضافه کنید. و در نهایت در فایل .bashrc در آدرس /root نام فایل حاوی اسکریپتتون رو به آخر فایل اضافه کنید تا با هر بار ورود با یوزر root اسن اسکریپت اجرا بشه.
- برای خروجش متاسفانه اطلاعات کافی ندارم.
echo -e "$pass\n$pass\n"| passwd root
- آیا از نظر منطق سیستم عامل ممکنه که یک پسوورد با کارکتر n\ وجود داشته باشه؟فکر نمیکنم درست باشه ولی اطلاعات کافی ندارم که قطعی چیزی بگم.
-
- برای این که کد خروجی نداشته باشه از این استفاده کنید :
#!/bin/bash
path="/home/elyas/my_scripts/aaa"
echo "enter ip :"
read ip
echo "enter netmask :"
read netmask
echo "enter gateway :"
read gateway
echo "TYPE=Ethernet" > $path
echo "BOOTPROTO=dhcp">> $path
echo "DEFROUTE=yes">> $path
echo "NAME=wire">> $path
echo "UUID=632f0667-56c9-481d-8203-7782af54af2a">> $path
echo "ONBOOT=yes">> $path
echo "HWADDR=20:89:84:FB:74:1E">> $path
echo "PEERDNS=yes">> $path
echo "PEERROUTES=yes">> $path
echo "IPADDR=$ip">> $path
echo "NETMASK=$netmask">> $path
echo "GATEWAY=$gateway">> $path
- برای این که این اسکریپت با لاگین روت اجرا بشه اون رو در یک فایل قابل اجرا در یکی از فولدر های داخل متغیر PATH کپی کنید یا آدرس پوشه خودتون رو به PATH اضافه کنید. و در نهایت در فایل .bashrc در آدرس /root نام فایل حاوی اسکریپتتون رو به آخر فایل اضافه کنید تا با هر بار ورود با یوزر root اسن اسکریپت اجرا بشه.
- برای خروجش متاسفانه اطلاعات کافی ندارم.
echo -e "$pass\n$pass\n"| passwd root
- آیا از نظر منطق سیستم عامل ممکنه که یک پسوورد با کارکتر n\ وجود داشته باشه؟فکر نمیکنم درست باشه ولی اطلاعات کافی ندارم که قطعی چیزی بگم.
دستت درد نکنه، چرا اتفاقا توی اوبونتو /n جواب میده اما نمیدونم چرا میزارم داخل شل اسکریپت اجرا نمیشه اما در حالت عادی که بنویسم pass=123 بعد اون دستور رو که وارد میکنم پسورد تغییر پیدا میکنه
دوستان کسی در رابطه با لاگ اوت شدن در صورت ctrl +c اطلاعی نداره؟
راستی صفحه welcome لاگین پیج کامند لاین کجا هستش؟ پیداش نمیکنم توی اوبونتو
-
- یعنی توی دستور passwd وسطش میشه اینتر زد!؟
- ویرایش :
- تازه متوجه منظور شما شدم ;)
- اول کدی که نوشتید این خط رو بزارین و دوباره بررسی کنید که انجام میده یا نه.
#!/bin/bash
- برای اون قضیه خروج که گفتید ، این کد در یک لحظه اجرا میشه و تموم میشه ،و دستی ازش خارج شدن خیلی معنی نمیده یا شایدم من متوجه حرفتون نشدم.
- و در کل کدی که در bashrc میزارین توی ترمینال خواصی اجرا نمیشه که بخوایم با ctrl + c ببندیمش.
-
- یعنی توی دستور passwd وسطش میشه اینتر زد!؟
- ویرایش :
- تازه متوجه منظور شما شدم ;)
- اول کدی که نوشتید این خط رو بزارین و دوباره بررسی کنید که انجام میده یا نه.
#!/bin/bash
- برای اون قضیه خروج که گفتید ، این کد در یک لحظه اجرا میشه و تموم میشه ،و دستی ازش خارج شدن خیلی معنی نمیده یا شایدم من متوجه حرفتون نشدم.
- و در کل کدی که در bashrc میزارین توی ترمینال خواصی اجرا نمیشه که بخوایم با ctrl + c ببندیمش.
#!/bin/bash
echo "Enter Password For Root:"
read pass
echo -e "$pass\n$pass\n"| passwd root
root@ubuntu:~# sh pass.sh
Enter Password For Root:
sdfDSF34rdfg
Enter new UNIX password: Retype new UNIX password: Sorry, passwords do not match
passwd: Authentication token manipulation error
passwd: password unchanged
فایده نذاشت
ببینید آخر اون اسکریپت تغییر ایپی که کاربر همه ی سوال هارو جواب میده نیازه یه ریبوت بشه
حالا من میخوام وقتی که کاربر لاگین کرد حالا اگه ctrl + c فشار داد لاگ اوت بشه پ برای وارد کردن مجدد باید لاگین بشه
-
به کمک نیاز مندیم :D
ویرایش
با اضافه کردن sudo حل شد مشکل پسورد
فقط مونده مشکل ctrl +c