Linux
如何將 /etc/hosts 複製到我所有的機器上?
import os, sys, time servers = ['dev','admin','db1'] for s in servers: cmd = 'scp /etc/hosts regular_user@%s:/etc/hosts' % s print cmd os.system(cmd)
我已經編寫了這個腳本來將我目前的 HOSTS 文件複製到我的所有其他伺服器。但是,我想從普通使用者而不是 ROOT 執行此操作。
由於覆蓋 /etc/hosts 需要 root 權限,我想做SUDO。如何將 sudo 放入該腳本中?
這不起作用,因為更改 /etc/hosts 文件的權限被拒絕。
cmd = 'sudo scp /etc/hosts regular_user@%s:/etc/hosts' % s
cat /etc/hosts | ssh otherhost "sudo sh -c 'cat >/etc/hosts'"
會成功的。
您需要在遠端主機上而不是在本地執行 sudo。顯然,要使其正常工作,您在遠端主機上的帳戶將需要 sudo 權限才能執行相關的複制命令。它看起來像這樣:
cmd = 'scp /etc/hosts regular_user@%s:/tmp/hosts' % s os.system(cmd) cmd = 'ssh regular_user@%s sudo cp /tmp/hosts /etc/hosts' % s os.system(cmd)
您可能會發現使用像 fabric 這樣的框架或像 cfengine 或 puppet 這樣的配置管理系統是一個更好的長期選擇……