首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在bash脚本中如何使用expect来为SSH命令提供密码?

在bash脚本中如何使用expect来为SSH命令提供密码?
EN

Stack Overflow用户
提问于 2018-03-12 01:38:39
回答 2查看 0关注 0票数 0

我想在bash脚本中使用expect来提供SSH密码。提供密码可行,但我不会像我应该那样在SSH会话中结束,它会回到bash。

我的脚本:

代码语言:javascript
复制
#!/bin/bash

read -s PWD

/usr/bin/expect <<EOD
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com'
expect "password"
send "$PWD\n" 
EOD
echo "you're out"

我的脚本的输出:

代码语言:javascript
复制
spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com
usr@$myhost.example.com's password: you're out

我想要我的SSH会话,并只有当我退出它回到我的bash脚本。之所以在预期之前使用bash,是因为我使用了一个菜单,我可以选择连接到哪个单元。

EN

回答 2

Stack Overflow用户

发布于 2018-03-12 09:53:00

尽量只使用Expect:

代码语言:javascript
复制
#!/usr/bin/expect
eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com
#use correct prompt
set prompt ":|#|\\\$"
interact -o -nobuffer -re $prompt return
send "my_password\r"
interact -o -nobuffer -re $prompt return
send "my_command1\r"
interact -o -nobuffer -re $prompt return
send "my_command2\r"
interact

bash的示例解决方案可能是:

代码语言:javascript
复制
#!/bin/bash
/usr/bin/expect -c 'expect "\n" { eval spawn ssh -oStrictHostKeyChecking=no -oCheckHostIP=no usr@$myhost.example.com; interact }'
票数 0
EN

Stack Overflow用户

发布于 2018-03-12 11:36:29

最简单的方法是使用sshpass。这在Ubuntu / Debian仓库中可用

一个例子:

代码语言:javascript
复制
sshpass -p<password> ssh <arguments>
sshpass -ptest1324 ssh user@192.168.1.200 ls -l /tmp

上述命令可以很容易地与bash脚本集成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100007580

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档