红联Linux门户
Linux帮助

Linux/Mac下执行某脚本自动输入密码

发布时间:2017-03-19 09:36:31来源:linux网站作者:Caldremch
前提条件: 安装了expect (mac: brew install expect)
 
当我们在终端启动MySQL服务,或者其他一些服务的时候, 如果权限不够, 需要赋予root权限, 如果频繁启动和关闭,都需要输入密码, 让人感觉很烦.
 
建立一个自动启动服务的脚本,该脚本能实现:
1.无论脚本在哪里执行, 都能进入脚本所在路径进行执行, 并且返回当前路径
2.如果需要输入root密码, 自动输入
 
直接上脚本startMysql:
#!/usr/bin/expect
#设置密码的值
set password "295002hzx" 
#expect方式: 进入脚本所在的路径
cd [file dirname $argv0]
#shell方式: 进入脚本所在的路径
#$currentpath=$(cd "$(dirname "$0")";pwd)
#cd $currentpath
#执行脚本 如果没有上一步,这里脚本需要加绝对路径才能正常执行
spawn sudo ./mysql.server start
#expect对通过spawn执行的shell脚本的返回进行判断,是否包含Password字符串
expect "Password"
#如果expect监测到了包含的字符串,将输入send中的内容,\n相当于回车
send "$password\n"
#退出expect返回终端,可以继续输入,否则将一直在expect不能退出到终端
interact
 
另附:
mac下启动mysql服务的地方:
1.在设置里面可以直接启动mysql服务
2.脚本启动的地方在mysql安装目录下的 support-files里面的mysql.server脚本
例如:/usr/local/mysql-5.7.17-macos10.12-x86_64/support-files
启动: ./mysql.server start
关闭: ./mysql.server stop
 
本文永久更新地址:http://www.linuxdiyf.com/linux/29289.html