使用 sudo 通过 SSH 执行多个命令

使用 sudo 通过 SSH 执行多个命令
#!/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 的任何选项,包括远程主机名。

相关内容