Ssh

帶有 ssh 的 bash 函式

  • December 23, 2011

我只是第一次接觸 bash。

我將如何在此範圍內的伺服器上執行功能?drush 狀態也僅在 ssh 連接的伺服器上。

#!/bin/bash

function test {
   drush status
}

function connect {
   ssh user@serveraddress 'test'

}

connect

我知道您需要將遠端程式碼放在 ssh user@server ‘code here’ 中,但是複雜的事情會與所有 ‘" 等混淆。例如,這應該回顯伺服器的所有數據庫名稱。

function connect {


   ssh user@serveraddress 
  '

   dbuser=user
   dbpass=pass
   DBS=`mysql -u$dbuser -p$dbpass -Bse 'show databases'| egrep -v 'information_sch$
   for db in $DBS; do
       echo "DB name -  $db"
   done

   '   
}


connect

任何幫助連結表示讚賞,乾杯

您可以使用此處的文件:

ssh user@serveraddress <<"END"
dbuser=user
dbpass=pass
DBS=$(mysql -u$dbuser -p$dbpass -Bse 'show databases'| egrep -v 'information_sch$')
for db in $DBS; do
   echo "DB name -  $db"
done
END

見:http ://tldp.org/LDP/abs/html/here-docs.html

你能不能把你的腳本放在遠端主機上並使用 ssh 來執行它

ssh user@remote.tld /path/to/script

或者,如果您的腳本不需要命令行參數,則 ypu 可以執行此操作

cat script | ssh user@remote.tld

編輯:

經過更多的研究,這可能是一個更好的解決方案

ssh user@remote.tld 'bash -s' <script 

或者

ssh user@remote.tld 'bash -s' <script param1 param2

如果存在 -s 選項,或者在選項處理後沒有保留任何參數,則從標準輸入讀取命令。此選項允許在呼叫互動式 shell 時設置位置參數。

引用自:https://serverfault.com/questions/343676