让我们假设我想将 ssh 写入 1.2.3.4 的脚本,然后调用 ls。问题是当调用“ssh 1.2.3.4”行时,需要密码,因此,即使我填写了密码,流程也会停止,脚本不会继续。输入密码后如何让脚本继续运行?
谢谢!
你想做公钥认证。这里有一些资源可以帮助你前进。
http://magicmonster.com/kb/net/ssh/auto_login.html
http://www.cs.rpi.edu/research/groups/vision/doc/auto/ssh/ssh_public_key_authentication.html
我会发布更多链接,但我没有足够的声誉点。;) 如果您需要更多帮助,只需在“SSH 自动登录”或“SSH 公钥身份验证”上搜索。
实际上,您正在尝试在本地运行 ls 但您打开了一个 ssh 会话。所以在会话打开之前它不会运行 ls 。如果你想远程运行 ls,你应该使用
ssh username@host COMMAND
其中 command 是您要运行的命令。调用命令后,SSH 会话将立即结束,您可以正常捕获其输出。
我建议您对需要 ssh 的脚本使用 RSA 身份验证方法。
我刚试过这个脚本:
#!/bin/sh
ssh vps1 ls
mkdir temp
cd temp
echo test > file.txt
它有效。我可以连接到我的服务器并列出我的家。然后,它在本地创建临时目录,将 cd 放入其中,然后在其中创建带有“测试”的 file.txt。
编写名为 login_to 的简单登录 bash 脚本并授予 exec 权限(chmod 744 login_to)
#!/bin/bash
if [ $1 = 'srv1' ]; then
echo 'srv1-pass' | pbcopy
ssh root@11.11.11.11
fi
if [ $1 = 'foo' ]; then
echo 'barbaz' | pbcopy
ssh -t dux@22.22.22.22 'cd ~/somedir/someotherdir; bash'
fi
现在像这样使用它
login_to srv1
login_to foo
当要求输入密码时,只需点击(ctrl+v 或 command+v)即可登录。