如何在shell上将变量传递给ssh命令

时间:2020-07-13 10:07:21

标签: linux ssh

我正在编写用于SSH服务器的脚本。

我有需要验证码和密码登录的服务器,我希望脚本可以每天登录服务器并在服务器上运行一些脚本(crontab)。

我只能在服务器上进行访问,而无权在服务器上设置crontab。 所以我想在自己的服务器上设置crontab和脚本。

(如果我无法在服务器上运行该脚本,至少我想通过一个命令行命令登录我的服务器。)

蠕虫流量

user ~% ssh xxxx@example.com

The authenticity of host 'example.com' can't be established.
RSA key fingerprint is SHA256?[yyyyyyyyyyyyyyyyyyy].
Are you sure you want to continue connecting (yes/no/[fingerprint])? (yes)
Verification code:  (input)
Password: (input)

xxxx$ ./a.sh

我在下面写命令

print "(verification code)\n(pwd)\n" | ssh -t -t xxxx@example.com

我认为该命令会将“ 代码”,“ 密码”传递给ssh并执行单行命令登录。

但是输出是

Verification code: | (cursor)

任何人都可以帮助我解决此问题(让脚本自动按Enter)??

2 个答案:

答案 0 :(得分:0)

使用“ sshpass”,例如:

for line in open('file.csv'):
    do_something(line)

答案 1 :(得分:0)

首先,如果“验证码和密码登录”是服务器中唯一的身份验证选项设置,我没有答案。

由于您在问题中没有提及基于密钥的身份验证,因此建议您调查是否是一种选择。

使用它为发送命令的机器生成私钥/公钥:

ssh-keygen -t rsa

通常会在〜/ .ssh(id_rsa和id_rsa.pub)中创建密钥。

然后,使用它来授权服务器上的登录:

ssh-copy-id xxxx@example.com

这会将您的公钥(〜/ .ssh / id_rsa.pub)添加到服务器中的〜/ .ssh / authorized_keys中。

相关问题