تمامی ادمین های سیستم از اهمیت مانیتور و مدیریت ماشین های زیاد در مدت زمان کوتاه مطلع هستند و این عملیات ترجیحا و تا حد ممکن باید با کوتاه ترین پروسه اجرایی انجام شود. خواه یک محیط ابری کوچک باشد یا یک سرور کلاستر بزرگ در هر حال امکان مدیریت متمرکز سیستم ها ضروریست.
ابزار DSH به کاربر این امکان را میدهد که دستورات را روی چندین سرور اجرا کند.
همچنین توصیه میشود مطالعه کنید :
دستور pssh برای اجرا کردن دستورات روی چندین سرور ریموت لینوکسی با استفاده تنها از یک ترمینال
نصب و راه اندازی Puppet در لینوکس برای اتوماتیک کردن تسک های مدیریتی IT
نحوه نصب و راه اندازی Ansible در لینوکس - بخش اول
DSH چیست؟
DSH در حقیقت مخفف “Distributed Shell” یا “Dancer’s Shell” میباشد که به صورت رایگان روی اکثر توزیع های اصلی لینوکس در دسترس است و در صورتی که توزیع شما ریپازیتوری این پکیج را ارائه نداده باشد به آسانی از طریق سورس قابل نصب میباشد. شما میتوانید سورس آن را از لینک زیر دریافت کنید :
نصب DSH در Linux :
در اینجا محیط تستی ما Debian/Ubuntu میباشد اگر شما از توزیع دیگری استفاده میکنید لطفا کامندهای مناسب برای سیستم تان را جایگزین کنید.
روی Debian/Ubuntu :
ابتدا پکیج را با استفاده از apt نصب میکنیم :
روی RHEL/CentOS/Fedora :
این روش برای آن دسته از کسانی که از دبیان استفاده نمیکنند و میخواهند سورس tar balls آن را کامپایل کنند. ابتدا باید “libdshconfig” را کامپایل و نصب کنیم :
سپس dsh را کامپایل و نصب کنید :
فایل اصلی همه تنظیمات روی سیستم دبیان در مسیر “/etc/dsh/dsh.conf” و روی سیستم ردهت در مسیر “/usr/local/etc/dsh.conf” میباشد اما از آنجایی که rsh یک پروتکل encrypt نشده میباشد ما از ssh به عنوان remote shell استفاده میکنیم. با استفاده از ادیتور مورد نظرتان در فایل تنظیمات DSH دنبال خط زیر بگردید :
و آن را همانند زیر تغییر دهید :
آپشن های دیگری هستند که شما در اینجا میتوانید پاس دهید که میتوانید آنها را از صفحه man دستور dsh پیدا کنید. در اینجا ما تنظیمات پیش فرض را قبول داریم و به فایل بعدی که روی سیستم عامل دبیان در مسیر /etc/dsh/machines.list قرار دارد نگاهی میاندازیم.
در سیستم های ردهت بیس شما باید فایلی با نام “machines.list” در مسیر “/usr/local/etc/” بسازید.
ساختار آن نسبتا ساده است همه آن چیزی که باید انجام دهید وارد کردن جزییات یک ماشین (Hostname, IP Address, FQDN) هرکدام در یک خط میباشد.
توجه : هنگامی که به بیشتر از یک ماشین به صورت همزمان دسترسی میابیم باید روی تمامی ماشین ها key-based password-less SSH را تنظیم کنیم. نه تنها دسترسی را آسان میکند بلکه از لحاظ امنیتی ماشین شما را سخت تر میکند.
روی سیستم من فایل “/etc/dsh/machines.list” یا “/usr/local/etc/machines.list” به شرح زیر میباشد :
بعد از اینکه جزییات ماشین هایی که میخواهید به آنها دسترسی داشته باشید را وارد کردید دستور ساده ای مانند uptime را برای تمامی ماشین ها اجرا کنید :
نمونه خروجی :
این کامند چه کاری انجام میدهد؟
بسیار ساده است. ابتدا ما دستور dsh را اجرا کردیم و آپشن -a را به آن پاس دادیم که این آپشن میگوید دستور uptime به همه “ALL” ماشین های لیست شده در فایل “/etc/dsh/machines.list“ ارسال شود.
سپس ما آپشن “–M” مشخص کردیم که نام ماشین “machine name” (نامی که در فایل “/etc/dsh/machines.list“ مشخص شده است) را به همراه خروجی دستور uptime برمیگرداند. (این آپشن بسیار مفید است خصوصا در مواردی که یک دستور روی تعداد زیادی ماشین اجرا میشود)
آپشن “–c” به معنای انتخاب دستوری که برای اجرا روی ماشین هاست میباشد که در مثال بالا دستور uptime را با استفاده از این آپشن مشخص کردیم. (“command to be executed”)
ابزار DSH همچنین میتواند با گروهی از ماشین ها که در فایل “/etc/dsh/groups/” مشخص شده اند تنظیم شود که این فایل شامل لیستی از ماشین هاست که به فرمت یکسانی همانند فایل “/etc/dsh/machines.list” میباشد. زمانی که dsh را روی گروه اجرا میکنیم باید با استفاده از آپشن “-g” نام گروه (groupname) را مشخص کنیم.
در سیستم های ردهت بیس شما باید فولدری با نام “groups” در مسیر “/usr/local/etc/” ایجاد کنید. در دایرکتوری “groups” باید فایل با نام “cluster“ بسازید.
برای مثال برای اجرا کردن دستور “w” روی همه ماشین های لیست شده در گروه “cluster” در فایل “/etc/dsh/groups/cluster” یا “/usr/local/etc/groups/cluster“ باید از دستور زیر استفاده کنید :
دستور DSH انعطافات بیشتری را شامل میشود و این پست تنها موارد سطحی را مورد پوشش قرار داده علاوه بر دستورات اجرایی همچنین میتواند برای انتقال فایل ها نصب نرم افزار افزودن route ها و موارد زیاد دیگری مورد استفاده قرار گیرد. و برای ادمین یک سیستم که مسئولیت یک شبکه بزرگ را به عهده دارد میتواند ابزار ارزشمندی به حساب بیاید.
موفق باشید
محمد هابیلی
ابزار DSH به کاربر این امکان را میدهد که دستورات را روی چندین سرور اجرا کند.
همچنین توصیه میشود مطالعه کنید :
دستور pssh برای اجرا کردن دستورات روی چندین سرور ریموت لینوکسی با استفاده تنها از یک ترمینال
نصب و راه اندازی Puppet در لینوکس برای اتوماتیک کردن تسک های مدیریتی IT
نحوه نصب و راه اندازی Ansible در لینوکس - بخش اول
DSH چیست؟
DSH در حقیقت مخفف “Distributed Shell” یا “Dancer’s Shell” میباشد که به صورت رایگان روی اکثر توزیع های اصلی لینوکس در دسترس است و در صورتی که توزیع شما ریپازیتوری این پکیج را ارائه نداده باشد به آسانی از طریق سورس قابل نصب میباشد. شما میتوانید سورس آن را از لینک زیر دریافت کنید :
نصب DSH در Linux :
در اینجا محیط تستی ما Debian/Ubuntu میباشد اگر شما از توزیع دیگری استفاده میکنید لطفا کامندهای مناسب برای سیستم تان را جایگزین کنید.
روی Debian/Ubuntu :
ابتدا پکیج را با استفاده از apt نصب میکنیم :
کد:
$ sudo apt-get install dsh
روی RHEL/CentOS/Fedora :
این روش برای آن دسته از کسانی که از دبیان استفاده نمیکنند و میخواهند سورس tar balls آن را کامپایل کنند. ابتدا باید “libdshconfig” را کامپایل و نصب کنیم :
کد:
# wget http://www.netfort.gr.jp/~dancer/software/downloads/libdshconfig-0.20.10.cvs.1.tar.gz # tar xfz libdshconfig*.tar.gz # cd libdshconfig-* # ./configure ; make # make install
کد:
# wget http://www.netfort.gr.jp/~dancer/software/downloads/dsh-0.22.0.tar.gz # tar xfz dsh-0.22.0.tar.gz # cd dsh-* # ./configure ; make # make install
کد:
remoteshell =rsh
کد:
remoteshell =ssh
در سیستم های ردهت بیس شما باید فایلی با نام “machines.list” در مسیر “/usr/local/etc/” بسازید.
ساختار آن نسبتا ساده است همه آن چیزی که باید انجام دهید وارد کردن جزییات یک ماشین (Hostname, IP Address, FQDN) هرکدام در یک خط میباشد.
توجه : هنگامی که به بیشتر از یک ماشین به صورت همزمان دسترسی میابیم باید روی تمامی ماشین ها key-based password-less SSH را تنظیم کنیم. نه تنها دسترسی را آسان میکند بلکه از لحاظ امنیتی ماشین شما را سخت تر میکند.
روی سیستم من فایل “/etc/dsh/machines.list” یا “/usr/local/etc/machines.list” به شرح زیر میباشد :
کد:
172.16.25.125 172.16.25.126
کد:
$ dsh –aM –c uptime
کد:
172.16.25.125: 05:11:58 up 40 days, 51 min, 0 users, load average: 0.00, 0.01, 0.05 172.16.25.126: 05:11:47 up 13 days, 38 min, 0 users, load average: 0.00, 0.01, 0.05
این کامند چه کاری انجام میدهد؟
بسیار ساده است. ابتدا ما دستور dsh را اجرا کردیم و آپشن -a را به آن پاس دادیم که این آپشن میگوید دستور uptime به همه “ALL” ماشین های لیست شده در فایل “/etc/dsh/machines.list“ ارسال شود.
سپس ما آپشن “–M” مشخص کردیم که نام ماشین “machine name” (نامی که در فایل “/etc/dsh/machines.list“ مشخص شده است) را به همراه خروجی دستور uptime برمیگرداند. (این آپشن بسیار مفید است خصوصا در مواردی که یک دستور روی تعداد زیادی ماشین اجرا میشود)
آپشن “–c” به معنای انتخاب دستوری که برای اجرا روی ماشین هاست میباشد که در مثال بالا دستور uptime را با استفاده از این آپشن مشخص کردیم. (“command to be executed”)
ابزار DSH همچنین میتواند با گروهی از ماشین ها که در فایل “/etc/dsh/groups/” مشخص شده اند تنظیم شود که این فایل شامل لیستی از ماشین هاست که به فرمت یکسانی همانند فایل “/etc/dsh/machines.list” میباشد. زمانی که dsh را روی گروه اجرا میکنیم باید با استفاده از آپشن “-g” نام گروه (groupname) را مشخص کنیم.
در سیستم های ردهت بیس شما باید فولدری با نام “groups” در مسیر “/usr/local/etc/” ایجاد کنید. در دایرکتوری “groups” باید فایل با نام “cluster“ بسازید.
برای مثال برای اجرا کردن دستور “w” روی همه ماشین های لیست شده در گروه “cluster” در فایل “/etc/dsh/groups/cluster” یا “/usr/local/etc/groups/cluster“ باید از دستور زیر استفاده کنید :
کد:
$ dsh –M –g cluster –c w
دستور DSH انعطافات بیشتری را شامل میشود و این پست تنها موارد سطحی را مورد پوشش قرار داده علاوه بر دستورات اجرایی همچنین میتواند برای انتقال فایل ها نصب نرم افزار افزودن route ها و موارد زیاد دیگری مورد استفاده قرار گیرد. و برای ادمین یک سیستم که مسئولیت یک شبکه بزرگ را به عهده دارد میتواند ابزار ارزشمندی به حساب بیاید.
موفق باشید
محمد هابیلی