我有一个通过 ssh 在远程主机上运行的脚本,处理来自主机的标准输入。
该脚本执行类似的操作(为了简化):
cat $TARBALL | ssh $REMOTE 'tar -x -C -f - && reboot'
如果我使用 root 作为 ssh 用户,那么这工作正常,但如果我在远程上没有 root 访问权限,我想用 sudo 执行命令,例如:
cat $TARBALL | ssh $REMOTE 'sudo tar -x -C -f - && sudo reboot'
我希望在这里以交互方式询问用户密码,但在这种情况下 sudo 无法获取密码。
我怎样才能以某种方式指示 sudo 在本地终端上询问密码?似乎 -A 选项可以启用此功能,但我无法弄清楚在这种情况下我可能需要什么 Askpass 程序。
答案1
当您必须处理标准输入上的密码提示时,推荐的 Unix 方法是使用expect(1)
专门为此目的而制作的工具。