در گفتگو با جام جم آنلاین مطرح شد
چرا به چنین ابزاری نیاز دارید، در حالی که با استفاده از 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
محمدرضا قربانی
در گفتگو با جام جم آنلاین مطرح شد
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
در یادداشتی اختصاصی برای جام جم آنلاین مطرح شد
اکبرپور: آزادی استقلال را به جمع ۸ تیم نهایی نخبگان میبرد
در گفتوگوی اختصاصی «جام جم» با رئیس کانون سردفتران و دفتریاران قوه قضاییه عنوان شد
در گفتگو با جام جم آنلاین مطرح شد
گفتوگوی بیپرده با محمد سیانکی گزارشگر و مربی فوتبال پایه