ssh 使用 sudo 执行一条命令后退出

正常情况下,如果想用 ssh 在远程主机上执行一条命令就退出,这样就可以了:
# for i in {1..10};do ssh host${i} cp /home/user/hosts /tmp/;done

现在想将 ~/hosts 文件覆盖 /etc/hosts。如果仅仅加上 sudo 是不行的:
# for i in 1 2 3;do ssh host${i} sudo cp /home/user/hosts /etc/hosts;done
sudo: sorry, you must have a tty to run sudo

加上 -t 参数即可,表示强制分配一个 pseudo-tty 给该 shell:
# for i in 1 2 3;do ssh -t host${i} sudo cp /home/user/hosts /etc/hosts;done

  • http://shellexy.info/ shellexy

    其实王博士弄点 rootkit 也就可以了/