linux ssh sudo -i,linux-使用bash在ssh中使用Expect执行sudo

博客内容讲述了如何在没有expect安装的服务器上,通过编写一个bash脚本结合使用ssh和sudo,在多台Linux主机上自动执行命令。作者遇到了密码发送和命令执行的问题,并分享了尝试的脚本,但未能成功。解决方案可能涉及到正确地构造expect脚本以处理sudo密码和交互流程。
摘要由CSDN通过智能技术生成

我想创建一个脚本来自动在多个Linux主机上进行安装.

我使用ssh密钥登录到主机,并且在登录名内想执行sudo,我尝试使用Expect,我在工作站上有,但在运行脚本的服务器上没有.

我该怎么做,这是我的尝试,但是没有运气:

#!/bin/bash

ssh user@station04 <

expect -d -c "

send \"sudo ls\"

expect {

\"password:\" { send '1234'; exp_continue }

\"$user@\"{

send "exit\r"

}

default {exit 1}

}"

EOF

exit

结果:

send: sending "sudo ls" to { exp0 }

expect: does "" (spawn_id exp0) match glob pattern "password:"? no

expect: read eof

expect: set expect_out(spawn_id) "exp0"

expect: set expect_out(buffer) ""

argv[0] = expect argv[1] = -d argv[2] = -c argv[3] =

send "sudo ls\r"

expect {

"password:" { send '1234'; exp_continue }

"@"{

send exitr

}

default {exit 1}

}

set argc 0

set argv0 "expect"

set argv ""

解决方法:

A.K

那这个呢?

#!/bin/bash

expect <

spawn ssh user@station04

expect "password:"

send "$pw\r"

expect "#"

send "sudo ls\r"

END

标签:expect,bash,linux,ssh

来源: https://codeday.me/bug/20191012/1902769.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值