我有命令ssh tony@mark
,并希望通过echo password
输入密码。我不想使用sshpass
,并且作为后台进程ssh tony@mark &
无效。即使前面的命令没有结束,还有什么方法可以在bash脚本中继续吗?因此,最终脚本应如下所示:
#!/bin/bash
ssh tony@mark
echo -e 'MYPASSWORD\n'
答案 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