How to copy file to multi server with single command

Hướng dẫn copy files qua nhiều server cùng lúc

Nay có nhu cầu cập nhật chương trình mới trên tất cả các máy chủ Linux nên sẵn viết bài này luôn để ghi chú sau này lỡ quên coi lại  ^^

Tầm 30 server mà ftp/scp vô từng em để chép files chắc chết quá. Tư duy của thằng lười lại trỗi dậy ^^!

Việc này khá ư là đơn giản. :)

Đầu tiên là tạo danh sách máy chủ


# vim server.txt

Gõ ip của từng server vô.

Tiếp theo, chép file qua danh sách máy chủ


for server in $(<server.txt); do
  scp xxx.txt ${server}:remote/path/
done
Gõ lệnh trên xong, chắc chắn là....lỗi rồi kiểu thế này:

Host key verification failed.
Khi kết nối đến bất kỳ thì nó sẽ hỏi  fingerprint, a hash of its full host key và yêu cầu xác nhận lại. Sau khi xác nhận, key chứng thực sẽ được vào:  ~/.ssh/known_hosts file.

Để bỏ qua key chứng thực cho host (server) nào đó thì chúng ta gõ lệnh sau:

ssh -oStrictHostKeyChecking=no -oUserKnownHostsFile=/dev/null username@ip_server
Tạm thời bỏ qua việc hỏi key, chúng ta có thể sửa file cấu hình sau:
# vim /etc/ssh/ssh_config

Cho 1 host nào đó

Host lecuong.vnsysadmin.com
    StrictHostKeyChecking no
disable all host:


Host *
    StrictHostKeyChecking no
hoặc cho subnet


Host 192.168.16.*
    StrictHostKeyChecking no
    UserKnownHostsFile=/dev/null
Phần quan trọng nhất, chép file qua bầy máy chủ kia ^^!


for dest in $(<server.txt); do
  sshpass -p 'user_password' scp xxx.txt ${dest}:/remote/path/
done

Chúc may mắn! Hehe...



Viết nhận xét

Các bạn có thể viết lời nhận xét cho bài viết, nhưng cần tuân thủ một số quy tắc sau:

» Các nhận xét/bình luận phải nghiêm túc, không dung tục, không spam.
» Nội dung phải liên quan tới chủ đề bài viết.
» Viết bằng tiếng việt có dấu hoặc tiếng Anh. Nội dung viết không dấu sẽ bị xóa.
» Hãy để lại tên của bạn khi nhận xét/bình luận, để tôi có thể dễ dàng trả lời bạn khi cần.