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

时间:2016-11-05 03:07:55

标签: mysql linux bash ssh

我正在研究MySQL,每次我都要

  1. 输入ssh XXX@XXX命令,然后输入我的密码到学校服务器。
  2. 输入mysql -u XXX -p命令,然后输入MySQL密码。
  3. 我想创建一个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
    

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

    我该怎么做?

2 个答案:

答案 0 :(得分:2)

您不需要这么复杂的脚本就可以在远程计算机上输入MySQL控制台。使用ssh工具的功能:

ssh -tt user@host -- mysql -uuser -ppassword

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

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

mysql -hhost -uuser -p

不要忘记调整shebang

#!/bin/bash -

答案 1 :(得分:-1)

使用my.cnf像ssh密钥一样存储密码。

https://easyengine.io/tutorials/mysql/mycnf-preference/

同样可以通过ssh -i参数传递ssh并传递远程主机的私钥路径。

祝你好运!