3

別のサーバーに ssh してスクリプトを実行したいと考えています。

ただし、スクリプトを実行する前に、ディレクトリをスクリプトのあるパスに変更し、いくつかの環境変数を設定する必要があります。

私のローカルホストでは、次の方法で実行できます

os.chdir(path)
os.environ["xxx"] = "xxx"

しかし、パラミコでは、上記のことを達成できる方法があるかどうかはわかりません。私が見つけた最も近いものは

ssh.exec_command("cd /xxx/yyy;xxx.sh")

しかし、一緒に接続するいくつかのコマンドを実行したくありません; .

paramikoを使用してsshするときに、ディレクトリを変更したり環境変数を設定したりできる他の方法はありますか?

4

3 に答える 3

0

ホスト ディレクトリを変更する方法については、まだ解決策が見つかりません。あなたのように、私は を使おうとしましたがsshClient.exec_command("cd " + directory_name)、効果がありませんでした。

ただし、複数のコマンドを発行するという質問についてはお手伝いできます。単に呼び出すことができますsshClient.exec_command("command1; command2; command3;")。または、次のようなヘルパー メソッドを作成することもできます。

def execCmd(ssh_client, *commands):
    for command in commands:
        stdin, stdout, stderr = ssh_client.exec_command(command)
        for line in stdout.readlines():
            print line
        for line in stderr.readlines():
            print line

cmds = [command1,command2,command3]
execCmd(SSH_Client,*cmds) 
于 2015-07-10T21:29:13.000 に答える
0

環境変数については、設定できませんでしたが、インタラクティブシェルを使用すると、ユーザーの環境変数が読み込まれます。.bashrc ファイルで変更できるもの。

対話型シェルのセットアップ方法: http://snipplr.com/view/12940/

于 2014-10-21T19:48:58.623 に答える
-1

「|」を使用できます パイプを使用して、さまざまなコマンドを結合します。ssh.exec_command() で動作します。

于 2013-03-29T07:06:22.750 に答える