0

次のパラメーターを使用して、SSH 経由で特定のスクリプトを実行できるラッパーを作成しました。

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

今、私は次のスクリプトを呼び出したいです:

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 

呼び出す必要があります

stop.sh param1 param2 param3 

一般的な方法で。

4

2 に答える 2

4

とを使用shift"$@"ます。

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

"$SCRIPT" "$@"

例:

$ cat sshwrapper.sh 
#!/bin/sh

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

echo "$SCRIPT" "$@"

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

コマンドラインから最初の引数を削除しshift、残りをシフトすることができます:

$ set 1 2 3 4 5
$ echo "$@"
1 2 3 4 5
$ shift 3
$ echo "$@"
4 5

shift 3最初の 3 つの引数を削除したことがわかります。

于 2012-07-31T09:56:20.817 に答える
2

以前は ssh を使用してリモート サーバーでスクリプトを実行していましたが、作業を楽にするために、公開鍵認証を設定して、パスワードなしでアクセスできるようにしました。

参考までにこちらの記事をご覧ください

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

次のように、コマンド ラインからデフォルトの ssh ツールを使用して、パラメーターを指定してリモート スクリプトを実行できます。

$ ssh user@server "script.sh param1 param2 param3"

次のように複数のコマンドを実行できます

$ ssh user@server "script1.sh param1 param2 param3; script2.sh param1 param2 param3"

例 - リモートサーバーにログインして日付を出力し、実行中のプロセスのリストを取得します

$ ssh user@server "echo date; ps -ef | grep hello"

これをssh-wrapper の一部として呼び出すか、コマンドラインから直接実行する場合は、上記のロジックをスクリプトに追加できます。

ssh セクションでは、「一重引用符」ではなく「二重引用符」を使用してください。

于 2012-07-31T10:19:06.067 に答える