اسکریپت نویسی شل لینوکس برای وبمسترها – قسمت۲

اسکریپت نویسی شل لینوکس برای وبمسترها – قسمت۲ : در قسمت قبل کار با متغیر ها و ارتباط با کاربر از طریق آرگومان ها و خط فرمان را یادگرفتیم.

در این قسمت قصد داریم ویرایش فایل های متنی با استفاده از اسکریپت نویسی را توضیح دهیم, میدانید که بیشتر سرویس های لینوکس دارای یک فایل متنی config  هستند که در طول مدیریت و کانفیگ سرور بارها باید آنها را ویرایش کنید, برای خودکار کردن روند کانفیگ سرویس ها باید یاد بگیریم با استفاده از اسکریپت نویسی تغییرات لازم را در این فایل ها اعمال کنیم.

اسکریپت نویسی شل لینوکس برای وبمسترها – قسمت۲

یکی از بهترین ابزار text manioulation در یونیکس و لینوکس ابزار sed  است, در ادامه با برخی از کاربرد های مفید این ابزار آشنا میشوید:

طرز کار بدین صورت است:

Sed ‘command’ file

مثلا کامند

s/a/A

شامل سه قسمت است; s اول substitute به معنی جایگزینی, که باعث میشود در فایل داده شده, a ها را با A   جای گزین کند. به مثال زیر توجه کنید:

sed ‘s/a/A/’ text1

با اجرای دستور بالا اولین ‘a’ ی هر خط موجود در متن فایل text1 به ‘A’ تبدیل میشوند.

یعنی اگر در یک خط نوشته banana موجود باشد, تبدیل به bAnana خواهد شد. در واقع فقط روی اولین مورد پیدا شده در هر خط, عمل جایگزینی را انجام میدهد. در صورتی که میخواهید تمام یافته را ویرایش کند, در آخر کامند یک g بگذارید.

دستور

Sed ‘s/a/A’ text1

باعث خواهد شد تمام کاراکتر های a به A تبدیل شود, یعنی در خروجی banana  به bAnAnA تبدیل خواهد شد.

اسکریپت نویسی شل لینوکس برای وبمسترها – بخش دوم

توجه کنید که در این حالت خروجی به خط فرمان ارسال خواهد شد و در فایل هیچ تغییر اعمال نمیشود, برای اعمال تغییرات در فایل از پارامتر های i و r استفاده کنید. یعنی:

Sed –i –r ‘s/a/A’ text1

لازم نیست گزینه مورد جستجو یک کاراکتر باشد, میتوانید از sed بخواهید apple  را جایگزین banana کنید.

 Sed –i –r ‘s/banana/apple’ text1

حالا بیایید وارد بحث تخصصی خودمان شویم:

اولین کاری که هنگام کانفیگ سرور انجام میدهید چیست؟ ست کردن آی پی!

در سرور های ردهت معمولا فایل کانفیگ آی پی در مسیر

/etc/sysconfig/network-scripts/ifcfg-eth0

قرار دارد

محتوی این فایل چیزی مانند:

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.0.1.0
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no

خواهد بود.

عوض کردن کردن مقدار IPADDR

برای عوض کردن کردن مقدار IPADDR با استفاده از sed چه کار کنیم؟

البته با دستور

Sed –I –r ‘s/IPADDR=10.0.1.27/IPADDR=192.168.4.1’ /etc/sysconfig/network-scripts/ifcfg-eth0

میتوانیم این کار را انجام دهیم ولی به شرط آنکه مقدار ۱۰٫۰٫۱٫۲۷ همیشه ثابت باشد, اما هدف اسکریپت نویسی این است که بتوانیم آنرا روی سرور های مختلف با تنظیمات مختلف اجرا کنیم, پس بیایید از sed بخواهیم هر سطری که با IPADDR= شروع شده را با IPADDR=192.168.4.1   که آی پی مورد نظر ماست جایگذین کند.

دستور به شکل زیر خواهد بود:

sed -i -r ‘s/(^IPADDR=(.*)$)/IPADDR=192.168.4.1/’ /etc/sysconfig/network-scripts/ifcfg-eth0

علامت ^   نشانگر اول سطر, .* نشان گر “هر چیزی” و $ نشانگر آخر سطر میباشد, به اینگونه کد نویسی برای جستجو در متون Regular Expression  میگوییم که برای کاربران خط فرمان لینوکس یادگیری آنها بسیار ارزشمند خواهد بود و ما نیز در ادامه بدان خواهیم پرداخت.

با عبارت بالا از ابزار sed  خواستیم وقتی به موردی رسید که اول سطر آن عبارت IPADDR= باشد, بدون توجه به ادامه آن تا آخر سطر, کل آن سطر را با “IPADDR=192.168.4.1” جایگزین کند.

برای ست کردن gateway نیز میتوان به همین منوال پیش رفت, مثال تنظیم gateway  را با کمک گرفتن از متغیر ها که در قسمت قبل توضیح داده شد ادامه میدهیم.

echo -n “Enter Default Gateway  “

read gatw

sed -i -r ‘s/(^GATEWAY=(.*)$)/GATEWAY=’$gatw’/’ /etc/sysconfig/network-scripts/ifcfg-eth0

در واقع آی پی gateway  را از کاربر دریافت کرده و در متغیر gatw قرار میدهیم.

سپس متغیر را به صورت ‘$gatw’ در دستوری که به

sed ارسال میشود قرار میدهیم.

اگر میخواستیم یک آی پی مشخص را تعیین کنیم به جای

‘$gatw’ شماره آی پی را مینوشتیم(درست مثل مثال قبل)

حالا دیگر میتوانید اسکریپتی بنویسید که عمل تنظیم آی پی را بدون نیاز به باز کردن فایل ifcfg در سیستم های پایه ردهت انجام دهد.

در قسمت های بعد عبارات شرطی را توضیح خواهیم داد.

0 پاسخ

دیدگاه خود را ثبت کنید

تمایل دارید در گفتگوها شرکت کنید؟
در گفتگو ها شرکت کنید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *