使用ENDSSH heredoc为SSH MySQL登录创建别名

时间:2013-05-02 02:12:45

标签: mysql bash ssh alias heredoc

我想创建一个保存在我的bashrc文件中的别名,通过SSH登录远程MySQL数据库。 假设我无法添加/更改我正在进入SSH的远程计算机上的任何文件。这是相关的代码。

function ssh_mysql {
  echo "SSHing to $server"
  ssh -t -t $suser@$server <<ENDSSH
    eval "mysql -h "$host" -u $user -p $pass $db"
ENDSSH
}
alias wt_mysql=ssh_mysql

问题:在终端中输入'wt_mysql'作为别名SSH并登录MySQL正常..但是当尝试在MySQL提示符下输入任何命令/查询/等时,我提交的内容都没有执行/跑。包括'exit'命令。我必须ctrl C才能回到我的本地终端。虽然它有点超出我的理解,我相信这个问题与这个主题有关,Terminating SSH session executed by bash script
如何确保远程执行mysql和任何后续命令?
谢谢!

1 个答案:

答案 0 :(得分:3)

我不明白您为何使用eval(或者为什么要将-t开关传递两次)。

我希望这个ssh命令能够做你想做的事情:

ssh -t $suser@$server "mysql -h '$host' -u $user -p $pass $db"