我需要在远程服务器中执行具有 root 权限的 shell 脚本。这些服务器不能由 root 用户通过 SSH 直接连接。因此,我必须先以普通用户身份连接 ssh,然后在执行脚本之前将其更改为 root。用户和 root 密码是先前存储的参数,因此键盘交互不是一种选择。这样,我需要一个非(人类)交互式脚本,例如:
#!/bin/sh
username=admin
password=admin123
hosts={host1..host50}
for hostname in $hosts ;
do
ssh $username@$hostname sudo 'bash -s' < ./test.sh > results.txt
done
我怎样才能做到这一点?在我当前的代码中,我需要输入管理员用户连接的密码,然后出现如下错误:sudo: no tty present and no askpass program specified
. 也许需要类似的命令expect
,但我在那里没有太多专业知识。
谢谢你的帮助。
PS:我不能使用 SSH 密钥,并且这些服务器中不允许进行管理更改。