用于交互式 ssh 和 mysql 命令的 Bash 脚本

J.P*_*Pei 1 mysql linux ssh bash

我正在学习MySQL,每次我都必须

  1. 输入ssh XXX@XXX命令,然后输入我的学校服务器密码。
  2. 输入mysql -u XXX -p命令,然后输入MySQL密码。

我想创建一个 Bash 脚本来自动执行上述步骤。

我可以用这段代码完成第一步:

#!/usr/bin/expect -f    
set address xxx.com   
set password xxx  
set timeout 10   
spawn ssh xxx@$address   
expect {    "*yes/no" { send "yes\r"; exp_continue}    "*password:" { send "$password\r" }  }  
send clear\r 
interact
Run Code Online (Sandbox Code Playgroud)

但我不知道如何自动输入下一个命令(mysql -u xxx -p)和密码。

我怎样才能做到这一点?

Rus*_*nov 5

您不需要如此复杂的脚本即可进入远程计算机上的 MySQL 控制台。使用该工具的功能ssh

ssh -tt user@host -- mysql -uuser -ppassword
Run Code Online (Sandbox Code Playgroud)

-t选项强制进行伪终端分配。多次-t强制 tty 分配,即使ssh没有本地 tty(请参阅 参考资料man ssh)。注意选项的使用-p。和密码之间不能有空格-p(请参阅手册mysql)。

或者甚至mysql直接通过连接,如果 MySQL 主机可以从本地计算机访问:

mysql -hhost -uuser -p
Run Code Online (Sandbox Code Playgroud)

不要忘记调整shebang

#!/bin/bash -
Run Code Online (Sandbox Code Playgroud)