Bash - SSH多个命令,它们之间有延迟

时间:2016-11-22 23:21:32

标签: bash ssh

我正在尝试连接到路由器的子模块,在其上运行一些命令并将输出保存到文件中。我遇到的问题是子模块需要用户名和密码,如果将所有命令放在一个脚本中,则会在输入提示之前发送用户名/通行证详细信息。有没有办法在命令之间设置延迟,或者在同一个SSH会话下批量运行它们?

我使用了EOF方法,并将命令放在一个单独的文件中(首选):

ssh user@root > file.log << EOF
session slot 1    # command to connect to the subslot. 
                  # a delay of about 3 sec would be required before the    credentials are sent
slot_username
slot_password
command1
command2
command3
exit
exit
EOF

此外,第二个出口应该让我离开路由器,但它被忽略了。

1 个答案:

答案 0 :(得分:1)

我之前使用命名管道完成了这项工作。创建命名管道并将其输入发送到ssh命令。

mkfifo a=rw FOO
cat FOO | ssh user@root > file.log

然后,您可以从另一个脚本将命令写入FOO:

echo username >> FOO
sleep 3
echo password >> FOO

然而......存在一种工具来完全按照你的方式行事。它被称为clogin。请参阅https://linux.die.net/man/1/clogin

上的文档