sshpass命令没有
时间: 2023-09-20 16:03:24 浏览: 254
sshpass源码包.zip
非常抱歉,我之前的回答有误。确实,`sshpass`命令不是默认安装在许多系统中,您可能需要通过其他方法来实现在`ssh-copy-id`命令中非交互式输入密码。
一个替代的方法是使用`expect`命令,它可以模拟用户与命令行交互。以下是一个使用`expect`命令的示例:
```shell
#!/usr/bin/expect
set password "your_password"
set host "user@host"
spawn ssh-copy-id -i ~/.ssh/id_rsa.pub $host
expect {
"*yes/no" {
send "yes\n"
exp_continue
}
"*password:" {
send "$password\n"
}
}
interact
```
在这个示例中,脚本使用`expect`命令来模拟与`ssh-copy-id`命令的交互。首先,它将密码和主机变量设置为您的实际值。然后,它使用`spawn`命令启动`ssh-copy-id`命令,并使用`expect`命令等待特定的提示。如果遇到"yes/no"提示,脚本会发送"yes"并继续等待。如果遇到"password:"提示,脚本会发送密码。最后,使用`interact`命令将控制权交还给用户。
请注意,为了安全起见,建议使用SSH密钥对进行身份验证,而不是在脚本中使用密码。
阅读全文