پوسته امن موازی، یک دستور در چند سیستم

بسیاری از ما از SSH برای ورود از راه دور به ماشین‌ها استفاده می‌کنیم، فایل کپی می‌کنیم، کارهای عمومی مدیریت سیستم را انجام می‌دهیم. اگر می‌خواهید کارایی‌تان را با SSH بالا ببرید، می‌توانید از ابزاری استفاده کنید که به شما اجازه می‌دهد کارایی‌تان را افزایش بدهید و یک دستور را به‌طور همزمان در چند ماشین اجرا کنید. Parallel ssh، Cluster SSH و ClusterIt به شما اجازه می‌دهند دستورات را در یک پنجره پایانه وارد کنید و به چند ماشین مختلف ارسال کنید.
کد خبر: ۲۱۵۷۶۳

چرا به چنین ابزاری نیاز دارید، در حالی که با استفاده از openSSH می‌توانید فایلی از دستورات خود ایجاد کنید و توی آن از دستور حلقه استفاده کنید و در چند سیستم مختلف اجرا کنید؟ خب، اگر این دستورات بخواهند همزمان در چند ماشین اجرا شوند، یا اگر بخواهیم در بلند مدت، وظایفی را اجرا کنیم که زمانبر هستند، یا یک فایل را در چند سیستم ویرایش کنیم، در این صورت، دستورات موازی بسیار سریع‌تر و کارآمدتر خواهند بود.

(Parallel ssh (pssh

پروژه pssh شامل نسخه‌های موازی‌ای از پوسته‌های (pssh)، scp (pscp)، rsync (prsync) و kill (pnuke) است.
Pssh برای openSUSE آماده شده و در کتابخانه یونیورس اوبونتو موجود است. تمام دستورات ssh موازی شکل و ساختار command –h hosts-file را دارند، که hosts-file لیستی از میزبان‌هاست که می‌خواهید دستور در آن اجرا شود. مثلا اولین دستور زیر تاریخ را در p1 و p2 اجرا می‌کند. آرگومان –l نام کاربری را مشخص می‌کند که بایستی برای ورود به ماشین راه دور استفاده کرد.
 cat hosts-file#
p1
p2

 #pssh -h hosts-file -l ben date
[1] 21:12:55 [SUCCESS] p2 22
[2] 21:12:55 [SUCCESS] p1 22

# pssh -h hosts-file -l ben -P date
p2: Thu Oct 16 21:14:02 EST 2008
p2: [1] 21:13:00 [SUCCESS] p2 22
p1: Thu Sep 25 15:44:36 EST 2008
p1: [2] 21:13:00 [SUCCESS] p1 22

معمولا خروجی استاندارد میزبان‌های راه دور به شما نشان داده نمی‌شوند.  انتخاب –P در آخرین تعامل، خروجی را در هر دو میزبان راه دور نشان می‌دهد. اگر شما از دستورات پیچیده‌تری استفاده می‌کنید، احتمالا بخواهید از –i استفاده کنید تا خروجی‌های میزبان‌ها را گروه‌بندی شده ببینید. همچنین می‌توانید از –outdir استفاده کنید تا مسیر پوشه‌ای را که می‌خواهید برای ذخیره خروجی هر میزبان راه دور استفاده شود، اعلام کنید. خروجی هر میزبان در فایل جداگانه‌ای همنام با ماشین میزبان آن ذخیره می‌شود.

می‌توانید از –-timeout استفاده کنید تا نشان دهید که یک دستور چقدر می‌تواند طول بکشد. بطور پیش‌فرض این عدد 60 ثانیه است. این بدین معنی است که اگر دستور شما در طی 60 ثانیه به پایان نرسید، pssh آن را خطا تلقی کرده و پیغام آن را بر می‌گرداند، که در زیر می‌بینید. می‌توانید زمان اجرای هر دستور را افزایش دهید تا از این خطا جلوگیری کنید.

# pssh -h hosts-file -l ben -i "sleep 65; date"
[1] 21:19:26 [FAILURE] p1 22 Timeout
[2] 21:19:26 [FAILURE] p2 22 (4, 'Interrupted system call')

دستور pscp همان –h و –l و -–timeout  را می‌گیرد و شامل --recursive هم می‌شود تا از کپی عمیق از میزبان محلی نیز پشتیبانی کند. در ادامه این دستور، شما مسیرهای محلی و راه دوری که می‌خواهید فایلتان را کپی کنید، انتخاب می‌کنید، اولین دستور pscp در مثال زیر، یک فایل را روی دو ماشین راه دور به‌طور موازی ارسال می‌کند. دستور sshای که به دنبال آن می‌آید مشخص می‌کند که آن فایل در p1 وجود دارد یا خیر. با دانستن این‌که می‌خواستیم یک دایرکتوری را کپی کنیم، می‌توانیم با افزودن –recursive از بروز خطا در سیستم جلوگیری کنیم.
$ mkdir  example-tree
$ date > example-tree/df1.txt
$ date > example-tree/df2.txt
$ mkdir  example-tree/subdir1
$ date > example-tree/subdir1/df3.txt

$ pscp -h hosts-file -l ben example-tree/df1.txt /tmp/df1.txt
[1] 21:28:36 [SUCCESS] p1 22
[2] 21:28:36 [SUCCESS] p2 22

$ ssh p1 "cat /tmp/df1.txt"
Thu Oct 16 21:27:25 EST 2008

$ pscp -h hosts-file -l ben example-tree /tmp/example-tree
...
python: Python/ceval.c:2918: set_exc_info: Assertion `frame != ((void *)0)' failed.
Aborted

$ pscp -h hosts-file -l ben --recursive  example-tree /tmp/example-tree
[1] 21:29:57 [SUCCESS] p1 22
[2] 21:29:57 [SUCCESS] p2 22

$ ssh p1 "ls -l /tmp/example-tree"
total 24
-rw-r--r-- 1 ben ben   29 2008-09-25 16:01 df1.txt
-rw-r--r-- 1 ben ben   29 2008-09-25 16:01 df2.txt
drwxr-xr-x 2 ben ben 4096 2008-09-25 16:01 subdir1

نکته: ben نام کاربری فرضی است.

دستور prsync تنها چند تا از انتخاب‌های rsync را با خود آورده است. به‌همین خاطر، شما نمی‌توانید از verbose (ارائه گزارش عملکرد) در سیستم استفاده کنید. دستوری که در زیر می‌آید دایرکتوری example-tree را روی سرور همخوان می‌کند.

$ prsync -h hosts-file -l ben -a --recursive  example-tree /tmp

محمدرضا قربانی

newsQrCode
ارسال نظرات در انتظار بررسی: ۰ انتشار یافته: ۰
روایت اول، شرط پیروزی

در گفت‌وگو با دکتر سیدمرتضی موسویان، ضرورت و اهمیت داشتن دکترین در رسانه و دلایل قوت و ضعف رسانه‌های داخلی و معاند را بررسی کرده‌ایم

روایت اول، شرط پیروزی

نیازمندی ها