Bash脚本继续,即使先前的命令未结束

时间:2019-04-12 08:37:28

标签: linux bash

我有命令ssh tony@mark,并希望通过echo password输入密码。我不想使用sshpass,并且作为后台进程ssh tony@mark &无效。即使前面的命令没有结束,还有什么方法可以在bash脚本中继续吗?因此,最终脚本应如下所示:

#!/bin/bash
ssh tony@mark
echo -e 'MYPASSWORD\n'

1 个答案:

答案 0 :(得分:1)

您需要使用ssh键。生成rsa密钥对:#include <iostream> #include <fstream> #include <thread> class dummy { std::ofstream file; public: dummy() {} void operator()() { std::cout << "in thread\n"; } }; int main() { dummy dum; std::thread t1(std::ref(dum)); t1.join(); // dont forget this }

然后使用一个简单的命令将其复制到服务器上:ssh-keygen

您现在可以不使用密码登录:ssh-copy-id userid@hostname


但是,如果要使用密码安装sshpass实用程序(在apt / yum中提供),请尝试:

ssh userid@hostname

期望:

sshpass -p your_password ssh user@hostname

例如:

#!/usr/bin/expect -f
#  ./ssh.exp password 192.168.1.11 id
set pass [lrange $argv 0 0]
set server [lrange $argv 1 1]
set name [lrange $argv 2 2]

spawn ssh $name@$server
match_max 100000
expect "*?assword:*"
send -- "$pass\r"
send -- "\r"
interact