代码如下:
#!/usr/local/bin/expect
set timeout 10
set host 172.16.249.126
set password 12345
set user hoho
spawn ssh -l $user -p22 $host
expect "*assword*"
send "$password\n"
sleep 2
spawn mysql -u hohoho -p1234567
expect "mysql>"send "GRANT ALL PRIVILEGES ON *.* TO 'root'@'localhost' IDENTIFIED BY '12345678' WITH GRANT OPTION;\n"
send "GRANT ALL PRIVILEGES ON *.* TO 'root'@'127.0.0.1' IDENTIFIED BY '12345678' WITH GRANT OPTION;\n" send "GRANT ALL PRIVILEGES ON *.* TO 'haha'@'localhost' IDENTIFIED BY '12345678' WITH GRANT OPTION;\n"
send "FLUSH PRIVILEGES;\n"
send "GRANT ALL PRIVILEGES ON *.* TO 'haha'@'127.0.0.1' IDENTIFIED BY '12345678' WITH GRANT OPTION;\n"
send "FLUSH PRIVILEGES;\n"
#expect "*OK*"
send "exit\n"
interact
这里就给了mysql创建个一个叫haha的用户,它拥有mysql所有的权限(不过这些可以自己去修改的).我是使用hoho用户去创建的,其中hoho用户也是拥有mysql所有权限的。
详细情况有时候再慢慢调整和做解释。
注:当使用到expect后,当输出的字符符合expect里面内容的话,他就会将send里面的内容显示出来。而不是等到执行时才会进去处理。