Linux免密码切换用户

免密码切换用户

在不做sudo的情况下,想要免输密码切换用户,可以编写交互式脚本。
两种方案:
1、使用 -c 避免 Here-Document 问题 <<EOF
2、解决 Here-Document 问题

反面案例 普通的Here-Document <<EOF

#!/bin/bash
password="123456"
/bin/expect <<EOF
  spawn su - root
  expect {
    "password: " {send "${password}\r"}
  }
  interact # 此处的 interact 会失败;因为 expect 无法接管 fd=0 让用户手动输入;interact 瞬间失效或退出
EOF

一、避开 Here-Document问题

#!/bin/bash
password="123456"
/bin/expect -c "
  spawn su - root
  expect {
    \"password: \" {send \"${password}\r\"}
  }
  interact
"

二、解决 Here-Document问题

Here-Document会劫持 stdin;解决 stdin 被劫持、让 interact 能够正常获取物理 TTY 键盘输入

#!/bin/bash
password="123456"
/bin/expect <(cat <<EOF
  spawn su - root
  expect {
    "password: " {send "${password}\r"}
  }
  interact
EOF
)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值