#!/bin/bash
while IFS="," read -r f1 f2
do
username="testuser"
SSHPASS='abcde' sshpass -e ssh -t "$username@$f1" "sudo su - root -c 'yum -y install wget'"< /dev/null ;
done < Input.txt
现在我不仅想wget
安装,还想执行一个脚本。
例如:Grep 并检查服务是否正在运行,删除不需要的文件夹等。
我已经尝试过:
#!/bin/bash
while IFS="," read -r f1 f2
do
username="testuser"
SSHPASS='abcde' sshpass -e ssh -t "$username@$f1" "sudo su - root -c
if [ -d /opt/xxxx ]; then
rm -rf /opt/xxxx
if [ -d /etc/xxxx ]; then
rm -rf /etc/xxxx
fi"< /dev/null ;
done < Input.txt
看来不行。我如何传递一个脚本以在远程计算机上以 root 身份执行?
答案1
使用 sudo 运行多个命令可以通过多种方式完成,请参阅 https://www.cyberciti.biz/faq/how-to-run-multiple-commands-in-sudo-under-linux-or-unix/
例如,followwing 将产生两行输出,第一行包含本地计算机的时间戳,第二行包含“root”。
sudo -- sh -c 'date; whoami'
您可以将其放在双引号中,以便在远程计算机上执行它。就像下面这样。
ssh [options] "sudo -- sh -c 'date; whoami'"
[options] 应替换为您想要提供给 ssh 的任何选项,包括远程主机名。