使用'expect'命令将密码远程传递给SSH运行脚本

Acrid_Soul

我需要创建一个bash脚本,该脚本将在一批计算机上远程运行另一个脚本。为此,我通过SSH传递了脚本。

ssh -p$port root@$ip 'bash -s' < /path/to/script/test.sh

我以为它将使用我的RSA密钥,但出现错误:

"Enter password: ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES)"

我尝试使用sshpass无济于事。所以我的下一个解决方案是使用Expect。我以前从未使用过Expect,我很肯定我的语法还很遥远。

ssh -p$port root@$ip 'bash -s' < /path/to/script/test.sh
/usr/bin/expect <<EOD
expect "password"
send "$spass\n"
send "\n"
EOD

我具有对所有计算机的root访问权限,只要代码保留在bash中,任何解决方案都可以。请记住,这将通过从父脚本传递的全局变量($ spass,$ ip,$ port等)在循环中完成。

ky

您通过两种方式做错了:

  1. 如果要expect与进行交互ssh,则需要sshexpect脚本而不是之前开始。

  2. 如果将脚本(/path/to/script/test.sh放在stdinof中ssh,则无法再与该ssh进程进行通信

您应该使用scp将脚本复制到远程主机,然后运行它。

Expect脚本可能如下所示:

/usr/bin/expect <<EOF
spawn ssh -p$port root@$ip
expect "password"
send "$Spass\r"
expect "$ "
send "/path/to/script/on/remote/server/test.sh\r"
expect "$ "
interact
EOF

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash脚本中的SSH + Sudo + Expect:在远程计算机中使用sudo运行命令

来自分类Dev

使用Expect脚本隐藏密码

来自分类Dev

使用Expect脚本从远程计算机执行SSH

来自分类Dev

使用Expect从ssh获取输出

来自分类Dev

通过cygwin上的Expect脚本使用ssh

来自分类Dev

使用Expect脚本从ssh捕获输出

来自分类Dev

如何使用Expect脚本测试SSH连接

来自分类Dev

如何使用Expect从ssh命令获得响应

来自分类Dev

如何使用Expect从ssh命令获得响应

来自分类Dev

如何使用“ -c”选项将参数传递给EXPECT?

来自分类Dev

Expect脚本:创建方法以使用ssh登录到远程服务器并在方法返回后发送命令

来自分类Dev

使用参数远程执行脚本将参数传递给`bash`而不是脚本

来自分类Dev

无法在Bash脚本中使用Expect

来自分类Dev

在启动的telnet会话中使用Expect脚本

来自分类Dev

如何在Expect脚本中使用日期?

来自分类Dev

在Expect脚本中使用bash数组

来自分类Dev

使用Expect自动化调试脚本

来自分类Dev

使用Expect登录并发出命令

来自分类Dev

从Expect脚本运行本地命令

来自分类Dev

如何将Shell脚本变量传递给Expect脚本?

来自分类Dev

在使用Expect进行远程登录时,如何通过Expect_out将输出字grep作为下一个命令输入变量?

来自分类Dev

使用Bash中的Expect设置初始的“ postgres”用户密码?

来自分类Dev

使用RCP和Expect进行无密码文件传输

来自分类Dev

使用Expect尝试一系列密码

来自分类Dev

如何将数组从Perl传递给Expect脚本?

来自分类Dev

无法使用SSH将字符串参数(多行)传递给远程脚本

来自分类Dev

使用Expect脚本自动处理多个文件的SCP

来自分类Dev

如何在Ruby Expect脚本中使用条件

来自分类Dev

在Expect脚本中使用两个交互

Related 相关文章

  1. 1

    Bash脚本中的SSH + Sudo + Expect:在远程计算机中使用sudo运行命令

  2. 2

    使用Expect脚本隐藏密码

  3. 3

    使用Expect脚本从远程计算机执行SSH

  4. 4

    使用Expect从ssh获取输出

  5. 5

    通过cygwin上的Expect脚本使用ssh

  6. 6

    使用Expect脚本从ssh捕获输出

  7. 7

    如何使用Expect脚本测试SSH连接

  8. 8

    如何使用Expect从ssh命令获得响应

  9. 9

    如何使用Expect从ssh命令获得响应

  10. 10

    如何使用“ -c”选项将参数传递给EXPECT?

  11. 11

    Expect脚本:创建方法以使用ssh登录到远程服务器并在方法返回后发送命令

  12. 12

    使用参数远程执行脚本将参数传递给`bash`而不是脚本

  13. 13

    无法在Bash脚本中使用Expect

  14. 14

    在启动的telnet会话中使用Expect脚本

  15. 15

    如何在Expect脚本中使用日期?

  16. 16

    在Expect脚本中使用bash数组

  17. 17

    使用Expect自动化调试脚本

  18. 18

    使用Expect登录并发出命令

  19. 19

    从Expect脚本运行本地命令

  20. 20

    如何将Shell脚本变量传递给Expect脚本?

  21. 21

    在使用Expect进行远程登录时,如何通过Expect_out将输出字grep作为下一个命令输入变量?

  22. 22

    使用Bash中的Expect设置初始的“ postgres”用户密码?

  23. 23

    使用RCP和Expect进行无密码文件传输

  24. 24

    使用Expect尝试一系列密码

  25. 25

    如何将数组从Perl传递给Expect脚本?

  26. 26

    无法使用SSH将字符串参数(多行)传递给远程脚本

  27. 27

    使用Expect脚本自动处理多个文件的SCP

  28. 28

    如何在Ruby Expect脚本中使用条件

  29. 29

    在Expect脚本中使用两个交互

热门标签

归档