我正在尝试编写一个脚本来ssh到从列表中检索到的服务器,然后报告订阅管理器信息。这是我的脚本,但有问题:
#!/bin/bash
SERVERLIST=`cat $HOME/Documents/RHEL_servers.txt | awk '{print $1}'`
SUBCOMMAND='sudo subscription-manager list --available'
#for HOSTS in $SERVERLIST; do echo $HOSTS;
#done
for HOSTS in $SERVERLIST; do ssh -t $HOSTS "($SUBCOMMAND)" > output.log;
done
通过查看output.log,似乎正在发生的事情是脚本挂在输入我的密码以启动subscription-manager命令的步骤上,但我没有看到。我的假设是它将它传递给远程计算机上的连接而不是我的身边,我从未看到输入密码的选项。 有没有办法解决? 我希望的最终结果是将订阅管理器列表的输出 - 可用命令传送到我的计算机上的output.log文件。
答案 0 :(得分:0)
虽然sudo
默认情况下会将其密码提示直接写入其控制终端,但该终端只是绑定到本地ssh
标准输出。您的脚本只是挂在等待输入密码的意义上;提示已写入输出日志。
您应该可以通过sudo
将密码直接发送到ssh
;您也可以使用-S
选项强制sudo
从其stdin中读取密码。
理想情况下,您可以在远程主机上配置sudo
以运行命令而无需密码。