Ssh
帶有 ssh 的 bash 函式
我只是第一次接觸 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
你能不能把你的腳本放在遠端主機上並使用 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 時設置位置參數。