4

スクリプト (たとえばrun.py) があり、それをリモート マシン (たとえば ) に scp し、10.1.100.100そのリモート マシンのディレクトリに cd して、run.pyそのディレクトリで実行したいと考えています。

上記の手順を 1 つの bash スクリプトでラップするにはどうすればよいですか? 別のマシンで bash にコマンドをリモートで実行させる方法がわかりません。

run.py端末で標準出力が表示されることを願っています。しかし、リダイレクトすることしかできなければ、それも問題ありません。

4

4 に答える 4

5
chmod +x ./run.py
scp -pq  ./run.py 10.1.100.100:'/home/myremotedirectory/run.py'
ssh 10.1.100.100     'cd /somedirectory  &&  /home/myremotedirectory/run.py'

それが役立つかどうかを確認してください

于 2012-04-22T03:36:05.317 に答える
3

SSH 経由でローカル スクリプトを実行する方法

あらすじ:

スクリプト ファイルをコピーせずに SSH 経由でスクリプトを実行します。シンプルな SSH 接続とローカル スクリプトが必要です。

コード:

#!/bin/sh
print_usage() {
        echo -e "`basename $0` ssh_connexion local_script"
        echo -e "Remote executes local_script on ssh server"
        echo -e "For convinient use, use ssh public key for remote connexion"
        exit 0
}

[ $# -eq "2" ] && [ $1 != "-h" ] && [ $1 != "--help" ] || print_usage

INTERPRETER=$(head -n 1 $2 | sed -e 's/#!//')

cat $2 | grep -v "#" | ssh -t $1 $INTERPRETER

例:

 - ssh-remote-exec root@server1 myLocalScript.sh #for Bash
 - ssh-remote-exec root@server1 myLocalScript.py #for Python
 - ssh-remote-exec root@server1 myLocalScript.pl #for Perl
 - ssh-remote-exec root@server1 myLocalScript.rb #for Ruby

段階的な説明

このスクリプトは次の操作を実行します: 1° は最初の行をキャッチします #! インタープリターを取得するには (つまり、Perl、Python、Ruby、Bash インタープリター)、2° は SSH 経由でリモート インターピーターを開始し、3° はすべてのスクリプト本体を SSH 経由で送信します。

ローカル スクリプト:

ローカル スクリプトは #!/path/to/interpreter で開始する必要があります

- #!/bin/sh for Bash script
 - #!/usr/bin/perl for Perl script
 - #!/usr/bin/python for Python script
 - #!/usr/bin/ruby for Ruby script

このスクリプトは、ローカル スクリプト拡張子ではなく、#! に基づいています。情報。

于 2014-03-10T10:21:27.603 に答える
1

次のように実行できます。

ssh -l yourid 10.1.100.100 << DONE
cd /your/dir/
./run.py
DONE

上記は編集済みです。元がどのようなものだったか覚えていませんが、1 つの接続でやりたい場合は、このようにします。

ssh -l yourid 10.1.100.100 python < <(
echo "import os"
echo "os.chdir('/yourdir')"
echo "print(os.getcwd())"
cat yourscript.py
)
于 2012-04-22T11:43:28.177 に答える
0

これは、要求されたディレクトリに cd しなければならないというルールではないことに注意してください。

リモート マシンにアクセスできたら、cd を使用せずに、このファイルへの相対パスを入力します。

/some_folder/./run.py
于 2014-05-09T15:29:11.100 に答える