连接到服务器,然后用bash脚本

时间:2018-03-24 18:25:49

标签: mysql linux bash

我一天多次输入相同的命令,因此认为编写shell脚本以节省重复可能是件好事。我还认为这可能是学习shell编码的一个好方法,因为我通常使用OOP语言。

代码应该打开到我的服务器的ssh连接,然后启动mysql并选择我想要使用的数据库。我努力使代码工作。我猜它是因为bash脚本在我的本地机器上,如果在远程机器上我需要以某种方式执行。我找不到任何如何做到这一点的例子。这是我的代码:

#!bin/bash

#Script to automate login to remote server and select specific mysql database

password="myPassword"
username="myUserName"
remoteuser="myUsername@my.se.rv.er.00"
echo "Attempting login to server.."

#attempt ssh connection to remote server...
status=$(ssh -o BatchMode=yes $remoteuser echo ok 2>&1)

    #if connection is made...
    if [[ $status == ok ]] ; then
        echo "connection established"
        echo "attempting mysql login..."

        #attempt to start mysql and select my database
         mysql --user=$username -p$password  -Bse"USE mydatabase; show tables;"

    elif [[ $status == "Permission denied"* ]] ; then
        echo "Permission denied"
    else
        echo "other_error"
    fi   

当我运行这个时,我收到错误: ERROR 2002(HY000):无法通过socket' /var/run/mysqld/mysqld.sock'连接到本地MySQL服务器;

如何修复此代码?我正确地解释了这个错误消息:我的脚本不工作的原因是因为mysql命令是在我的机器而不是服务器上运行的?

代码的目的不是启动在我的服务器上运行的脚本,而是创建一个连接到我的服务器的完整脚本,确认连接,然后将我登录到远程机器上的mysql,以便然后我可以通过自己的终端继续处理它。

1 个答案:

答案 0 :(得分:0)

您需要在SSH命令的上下文中运行命令。这可以通过bash here文档完成。见这里:http://www.tldp.org/LDP/abs/html/here-docs.html

示例:

ssh otherhost << EOF
  ./someaction.sh 'some params'
EOF