انجمن‌های فارسی اوبونتو

کمک و پشتیبانی => برنامه‌سازی => نویسنده: PunkGeek در 07 تیر 1393، 01:20 ب‌ظ

عنوان: درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 07 تیر 1393، 01:20 ب‌ظ
سلام دوستان
نیاز به یه شل اسکریپت ساده دارم که هر وقت اجرا میشه ایپی و گتوی و نت ماسک رو دریافت کنه و جایگزینه ایپی موجود در فایل interface کنه
خیلی ممنونم
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: elyas74 در 07 تیر 1393، 08:59 ب‌ظ
 - من اوبونتو ندارم ،اگه آدرس فایل و یک نمونه از محتویاتش رو بزارید ،انجامش میدم براتون.
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 07 تیر 1393، 09:25 ب‌ظ
- من اوبونتو ندارم ،اگه آدرس فایل و یک نمونه از محتویاتش رو بزارید ،انجامش میدم براتون.

خیلی ممنونم
/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 رو باید تغییر بده
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: elyas74 در 07 تیر 1393، 11:06 ب‌ظ
 - شرمنده چیزی به ذهنم نمیاد الان ،فکر میکردم مثل سیستم عامل خودم هر interface فایلش جداست که با یک sed راحت حل میشه. :(
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 07 تیر 1393، 11:07 ب‌ظ
- شرمنده چیزی به ذهنم نمیاد الان ،فکر میکردم مثل سیستم عامل خودم هر interface فایلش جداست که با یک sed راحت حل میشه. :(

فدورا میشد، حالا شما اگر امکانش هست sed رو بنویسید من یه فکری به حالش مکنم
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: elyas74 در 08 تیر 1393، 01:07 ق‌ظ
 - مبتدیانه است ولی همچین چیزی به ذهنم رسید (این کانفیگ فدوراست)  ::)
#!/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
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 08 تیر 1393، 01:26 ق‌ظ
- مبتدیانه است ولی همچین چیزی به ذهنم رسید (این کانفیگ فدوراست)  ::)
#!/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 رو پاک کنه و اخر کار اون سه تادخط رو اکو بدم چطوره؟
ممنونم بابت شل
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: elyas74 در 08 تیر 1393، 11:13 ق‌ظ
 - اینجور که از فایل شما دیده میشه شما با interface های alias هم کار میکنید، که ممکنه لیستتون کم یا زیاد بشه ،ولی اگه یک لیست ثابت دارین خوبه.

نقل‌قول
به نظرتون اگه فایل interfaces رو پاک کنه و اخر کار اون سه تادخط رو اکو بدم چطوره؟

 - اینم آدرسی که تحت عنوان path میگیره رو پاک میکنه ( چون اولین دستور tee ، نداره append-- رو ) ،و محتویاتی که میخواید رو میتونید اکو کنید ،اگه همیشه فایل به یک شکله.
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 08 تیر 1393، 03:30 ب‌ظ
- اینجور که از فایل شما دیده میشه شما با interface های alias هم کار میکنید، که ممکنه لیستتون کم یا زیاد بشه ،ولی اگه یک لیست ثابت دارین خوبه.

نقل‌قول
به نظرتون اگه فایل interfaces رو پاک کنه و اخر کار اون سه تادخط رو اکو بدم چطوره؟

 - اینم آدرسی که تحت عنوان path میگیره رو پاک میکنه ( چون اولین دستور tee ، نداره append-- رو ) ،و محتویاتی که میخواید رو میتونید اکو کنید ،اگه همیشه فایل به یک شکله.

eth0:1 ثابت هستش
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 10 تیر 1393، 08:08 ق‌ظ
با تشکر فراوان، اسکریپتی که دادید جواب داد
فقط یه موردی چطور باید کاری کنم که خروجی رو نشون نده؟
و اینکه با هر بار لاگین کردن یوزر روت، اسکریپت خودکار اجرا بشه و در صورت کنسل کردن (ctrl + c) یوزر روت هم لاگ اوت بشه؟
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: سلمان م. در 10 تیر 1393، 12:54 ب‌ظ
میشه بگی این کدها رو برای چه کاری می‌خوای؟
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 10 تیر 1393، 01:06 ب‌ظ
میشه بگی این کدها رو برای چه کاری می‌خوای؟

برای یه ماشین مجازی که ایپی رو غیر از interfaces داخل چند تا فایل php هم باید ست کنه و یه سری چیز های دیگه مثل پسورد و ...
در اصل یه پنلی هست برای esxi فعلا آماده نشده هنوز

فقط نمیدونم چرا این کد که نوشتم کار نمیده
echo "Enter Password For Root:"
read pass

echo -e "$pass\n$pass\n"| passwd root
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: elyas74 در 10 تیر 1393، 10:02 ب‌ظ
 - برای این که کد خروجی نداشته باشه از این استفاده کنید :
#!/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\ وجود داشته باشه؟فکر نمیکنم درست باشه ولی اطلاعات کافی ندارم که قطعی چیزی بگم.
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 11 تیر 1393، 06:40 ق‌ظ
- برای این که کد خروجی نداشته باشه از این استفاده کنید :
#!/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 لاگین پیج کامند لاین کجا هستش؟ پیداش نمیکنم توی اوبونتو
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: elyas74 در 11 تیر 1393، 11:24 ق‌ظ
 - یعنی توی دستور passwd وسطش میشه اینتر زد!؟


 - ویرایش :
 - تازه متوجه منظور شما شدم  ;)
 - اول کدی که نوشتید این خط رو بزارین و دوباره بررسی کنید که انجام میده یا نه.
#!/bin/bash
 - برای اون قضیه خروج که گفتید ، این کد در یک لحظه اجرا میشه و تموم میشه ،و دستی ازش خارج شدن خیلی معنی نمیده یا شایدم من متوجه حرفتون نشدم.
 - و در کل کدی که در bashrc میزارین توی ترمینال خواصی اجرا نمیشه که بخوایم با ctrl + c ببندیمش.
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 12 تیر 1393، 04:17 ب‌ظ
- یعنی توی دستور 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  فشار داد لاگ اوت بشه پ برای وارد کردن مجدد باید لاگین بشه
عنوان: پاسخ : درخواست شل اسکریپت
ارسال شده توسط: PunkGeek در 13 تیر 1393، 10:25 ق‌ظ
به کمک نیاز مندیم  :D

ویرایش
با اضافه کردن sudo حل شد مشکل پسورد
فقط مونده مشکل ctrl +c