یک اسکریپت Bash بنویس که با استفاده از کلیدهای SSH به فهرست سرورهای موجود در فایل hosts.txt متصل شود، یک فایل محلی را با scp به مسیر مشخص روی هر سرور منتقل کند و پس از انتقال با ssh یک دستور ساده روی هر سرور اجرا کند.

16.0 بازدید آخرین ویرایش در 198 روز قبل ساعت 01:34

0.0

برای حل: ابتدا یک جفت کلید بدون پسورد با ssh-keygen بسازید و کلید عمومی را با ssh-copy-id یا روش مشابه به هر سرور منتقل کنید تا احراز هویت بدون رمز انجام شود. سپس در یک اسکریپت Bash از یک حلقه برای خواندن هر نام/آی‌پی از hosts.txt استفاده کنید، با scp فایل را به مسیر مقصد کپی کرده و با ssh دستور مورد نظر را اجرا کنید؛ از گزینه -i برای استفاده از فایل کلید و از -o StrictHostKeyChecking=no فقط در محیط‌های کنترل‌شده استفاده کنید. برای بررسی خطاها وضعیت خروجی ($?) را پس از هر عملیات چک کنید و در صورت نیاز از sftp با گزینه -b برای انتقال دسته‌ای یا از یک فایل لاگ برای ثبت نتایج استفاده کنید.

توسط پژوهشگر در 198 روز قبل ساعت 01:34
دسته بندی ها: Bash Scripting Bash Scripting for beginner
nima در 198 روز قبل ساعت 01:35

پیش از اجرای اسکریپت حتما یک جفت کلید بدون پسورد بسازید و کلید عمومی را با ssh-copy-id یا ssh-agent به سرورها منتقل کنید و در فرمان‌های scp/ssh از -o BatchMode=yes استفاده کنید تا از پرسش رمز جلوگیری شود. از -o StrictHostKeyChecking=no فقط در محیط‌های کنترل‌شده استفاده کنید چون غیرفعال‌کردن چک‌کلید خطر MITM را افزایش می‌دهد. پس از هر scp/ssh وضعیت خروجی ($?) را بررسی و خروجی‌ها را به یک فایل لاگ ثبت کنید تا خطاها قابل پیگیری باشند. برای سرعت و مقاومت بهتر، فایل hosts.txt را از خطوط خالی و کامنت پاک کنید و در صورت نیاز با GNU Parallel یا pssh انتقال‌ها و اجرای دستورات را موازی‌سازی کنید.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری