2012-07-31 78 views
0

我創建了可以用下面的參數Shell腳本:傳遞包裝參數對底層腳本

sshwrapper.sh <server> <script with path> <username> <password> 

現在我想調用下面的腳本通過SSH執行給定的腳本的包裝:

start.sh param1 param2 param3 param4 

stop.sh param1 param2 param3 

使用相同的包裝。

是否有可能有一個機制,在將基本參數傳遞給包裝腳本之後,我可以將剩餘參數發佈到底層腳本中?

即我想實現以下符號:

實例:

sshwrapper.sh server start.sh username password param1 param2 param3 param4 

應該調用

start.sh param1 param2 param3 param4 

sshwrapper.sh server stop.sh username password param1 param2 param3 

壽ld invoke

stop.sh param1 param2 param3 

以通用的方式。

回答

3

使用shift"[email protected]"

SERVER="$1" 
SCRIPT="$2" 
USERNAME="$3" 
PASSWORD="$4" 
shift 4 

"$SCRIPT" "[email protected]" 

例子:

$ cat sshwrapper.sh 
#!/bin/sh 

SERVER="$1" 
SCRIPT="$2" 
USERNAME="$3" 
PASSWORD="$4" 
shift 4 

echo "$SCRIPT" "[email protected]" 

$ ./sshwrapper.sh server stop.sh username password param1 param2 param3 
stop.sh param1 param2 param3 

使用shift您可以通過命令行刪除第一個參數,並轉向其他地區:

$ set 1 2 3 4 5 
$ echo "[email protected]" 
1 2 3 4 5 
$ shift 3 
$ echo "[email protected]" 
4 5 

在這裏你看即刪除了shift 3前三個論點。

+0

優秀...我以爲我的問題描述不夠清楚,但你確實給了我一些我想要的東西。謝謝!! – SiB 2012-07-31 10:08:27

+0

很高興爲您效勞! – 2012-07-31 10:24:32

2

我已經使用ssh來執行以前在遠程服務器上的腳本,而是爲了讓我的生活更輕鬆我建立公鑰認證,允許密碼的訪問。

請參見本文參考

http://macnugget.org/projects/publickeys/

可以使用命令行缺省SSH工具參數執行遠程腳本如下

$ ssh [email protected] "script.sh param1 param2 param3" 

可以如下執行的多個命令

$ ssh [email protected] "script1.sh param1 param2 param3; script2.sh param1 param2 param3" 

E.摹 - Loginto遠程服務器和打印日期,並獲得運行列表處理

$ ssh [email protected] "echo date; ps -ef | grep hello" 

您可以將上面的邏輯添加到您的腳本,假設你想調用這是屬於你SSH-包裝,或者直接從命令行執行。

只要確保您在ssh部分使用「雙引號」而不是'single'

+0

+1。用戶名,密碼只是爲了顯示包裝器使用的一些參數。無論如何感謝您的回覆。 – SiB 2012-07-31 13:34:05