2013-05-02 59 views
0

我想讓保存在我的bashrc文件中的別名通過SSH登錄到遠程MySQL數據庫。 假設我無法添加/更改正在接入的遠程計算機上的任何文件。這是相關的代碼。爲SSH創建別名使用ENDSSH登錄MySQL登錄heredoc

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

的問題:進入「wt_mysql」到終端作爲別名SSHS並登錄到MySQL的罰款..但想在MySQL提示符輸入任何命令/查詢/等時,沒有我所提交已執行/運行。包括'exit'命令。我必須按C鍵才能返回到我的本地終端。雖然它有點出於我的理解我相信問題與此主題有關,Terminating SSH session executed by bash script
我如何確保mysql和任何後續命令遠程執行?
謝謝!

+2

爲什麼你定義'函數ssh_mysql'然後'別名wt_mysql = ssh_mysql'而不是隻定義'函數wt_mysql'的?我假設在我的答案中,運行'ssh_mysql'和運行'wt_mysql'時遇到同樣的問題,但如果是這種情況,那麼爲什麼要告訴我們這個別名?一般來說,您應該儘可能簡化您的問題,以方便人們幫助您。 – dave4420 2013-05-02 08:53:22

+0

感謝您的解決方案。我一直在思考的東西..我一直希望這是一個別名,以便它出現在帶有別名命令的標準輸出中。我的問題是,我有這個時髦的密碼來解決這個問題字符。將我的特定解決方案添加到下面的解決方案的評論中。 – sojojo 2013-05-09 20:14:32

回答

3

我不明白你爲什麼使用eval(或者你爲什麼通過-t開關兩次)。

我希望這個ssh命令,做你想做的:

ssh -t [email protected]$server "mysql -h '$host' -u $user -p $pass $db" 
+1

我認爲'-t'至少需要一次(通過'ssh'運行一個交互式程序);兩次應該是無害的。 – chepner 2013-05-02 12:17:40

+0

@chepner是的,需要'-t'來分配一個終端...我對第二個'-t'應該完成什麼感到困惑。 – dave4420 2013-05-02 21:59:48

+0

再次感謝@ dave4420以下是我在創建ssh + mysql別名時的特殊情況:'ssh_mysql(){ssh_mysql(){ssh -t $ suser @ $ server「mysql -h」$ host「-u」$ user「 - -password ='「$ pass」'「$ db」「 } alias wt_mysql = ssh_mysql' – sojojo 2013-05-09 20:25:26