简体   繁体   中英

Bash script for interactive ssh and mysql commands

I'm studying MySQL, and every time I have to

  1. Enter ssh XXX@XXX command, and enter my password to the school server.
  2. Enter mysql -u XXX -p command, and enter MySQL password.

I want to create a Bash script for performing the steps above automatically.

I can accomplish the first step with this code:

#!/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

But I don't know how to automatically input the next command ( mysql -u xxx -p ) and the password.

How can I do this?

You don't need such a complex script to just enter the MySQL console on remote machine. Use the features of the ssh tool:

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

The -t option forces pseudo-terminal allocation. Multiple -t force tty allocation, even if ssh has no local tty (see man ssh ). Note the use of -p option. There must be no spaces between -p and password (see the manual for mysql ).

Or even connect via mysql directly, if the MySQL host is accessible from your local machine:

mysql -hhost -uuser -p

Don't forget to adjust the shebang :

#!/bin/bash -

Use my.cnf to store your password securly like ssh keys.

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

Same way ssh is also possible through ssh -i parameter and passing the private key path of the remote host.

Best of luck!

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM