【发布时间】:2018-01-11 12:47:53
【问题描述】:
我正在尝试通过 ssh 连接到远程机器并运行脚本。这个脚本有一个交互式确认:“你想运行它吗?{Y/N}”之类的东西。如何通过 ssh 命令直接对它说“Y”?
out=$(sshpass -p "abc" ssh -o StrictHostKeyChecking=no -l root x.x.x.x "./abc.py")
【问题讨论】:
-
如果这是字面上唯一的字符串...
out=$(sshpass -p "abc" ssh -o StrictHostKeyChecking=no -l root x.x.x.x './abc.py <<<Y')。顺便说一句,在可执行文件上添加扩展是不好的形式——你不运行ls.elf,出于同样的原因你不应该运行abc.py;.py扩展用于 Python 模块,而不是 Python 脚本。 (例如,如果您使用 distutils 让您的setup.py为您的入口点自动生成可执行包装器,您会注意到这些包装器没有任何扩展)。 -
几乎所有规范的 Unix 工具都允许您使用标志或类似的东西覆盖这些确认。举个例子:您正在这里使用
ssh的主机密钥检查。在您尝试模拟人类输入响应之前,请与./abc.py检查它是否提供此类功能。