使用expect编写开机后,一键开启三权的脚本。expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
具体的使用方法,查看如下文档(expect的用法.md,建议使用Markdown打开)expect的用法.md
expect是一个自动化交互套件,主要应用于执行命令和程序时,系统以交互形式要求输入指定字符串,实现交互通信。
expect自动交互流程:
spawn启动指定进程—expect获取指定关键字—send向指定程序发送指定字符—执行完成退出.
spawn是进入expect环境后才可以执行的expect内部命令。
expect是一种脚本语言,它能够代替我们实现与终端的交互,不必再守候在电脑旁边输入密码,或是根据系统的输出再运行相应的命令。
检测是否安装
ls /usr/bin | grep expect
如何安装
sudo apt-get install expect
或
yum install -y expect
expect常用命令总结:
spawn 交互程序开始后面跟命令或者指定程序
expect 获取匹配信息匹配成功则执行expect后面的程序动作
send exp_send 用于发送指定的字符串信息
exp_continue 在expect中多次匹配就需要用到
send_user 用来打印输出 相当于shell中的echo
exit 退出expect脚本
eof expect执行结束 退出
set 定义变量
puts 输出变量
set timeout 设置超时时间
示例
测试用例,su到root用户
#!/usr/bin/expect -f
set timeout 10
spawn sudo su - root
expect "*kylin 的密码*"
send "qwe123\r"
expect "#*"
send "ls\r"
expect "#*"
send "df -Th\r"
send "exit\r"
expect eof
一件配置三权脚本V10
#!/usr/bin/expect -f
set rootpasswd "qwe123."
set secadmpasswd "qwer1234."
set auditadmpasswd "qwer1234."
# 设置超时时间
set timeout 15
spawn security-switch --set strict
# 捕获到密码
expect "*请输入新密码:*"
send "$rootpasswd\r"
# 请再次输入新密码进行确认
expect "*请再次输入新密码进行确认:*"
send "$rootpasswd\r"
# secadm 用户密码需要手动设置
expect "*请输入新密码:*"
send "$secadmpasswd\r"
# secadm 请再次输入新密码进行确认
expect "*请再次输入新密码进行确认:*"
send "$secadmpasswd\r"
# auditadm 用户密码需要手动设置
expect "*请输入新密码:*"
send "$auditadmpasswd\r"
# auditadm 请再次输入新密码进行确认
expect "*请再次输入新密码进行确认:*"
send "$auditadmpasswd\r"
# 设置完成,等待重启
expect "*系统安全级别切换成功,请立即重启系统生效*"
# 输入密码并回车
#send "reboot\r"
expect eof