祝各位道友念头通达
GitHub Gitee 语雀 打赏

expect 自动输入用户密码

expect

今天发现一个特别有意思的命令 expect
sudo apt install expect -y
在使用一些远程登录,ftp登录, 本地用户切换登录的操作都需要输入用户的密码, 或者是一些内部命令行,比如mysql控制台,ceph控制台,fdisk /dev/nvme* 初始化磁盘分区控制台, 使用 expect的命令会全自动登录.
命令格式

#!/usr/bin/expect
set timeout 30
spawn su oem    ##切换用户, spawn su -c "/home/han/test/start.sh" oem & 以某个用户执行脚本
expect "*密码*"
send "123\r"
expect "*#*"
## to do

spawn 是 expect 的内部命令,意思就是以一个新的线程去执行某个命令, 然后 expect监听新的线程会出现的一些关键词, 然后向线程发送一些指令

额外的: 在java中调用命令行的时候,都会有三个线程, 一个输入线程, 两个输出线程(正常输入线程,错误输出线程), 那实现类似 expect这个方法就不难了,正则匹配输出流的关键词.然后向输入线程发送对应指令字符串即可.

posted @ 2022-06-20 10:40  韩若明瞳  阅读(384)  评论(0编辑  收藏  举报