您的位置:首页 > 运维架构 > Linux

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

2017-03-18 14:30 645 查看
前提条件: 安装了expect (mac: brew install expect)

当我们在终端启动mysql服务,或者其他一些服务的时候, 如果权限不够, 需要赋予root权限, 如果频繁启动和关闭,都需要输入密码, 让人感觉很烦

建立一个自动启动服务的脚本,该脚本能实现:

无论脚本在哪里执行, 都能进入脚本所在路径进行执行, 并且返回当前路径

如果需要输入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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql brew 脚本 linux mac