0

私の悪い英語で申し訳ありません。いつか私の質問の解決策を探しましたが、見つかりませんでした。

これは私の質問です。server-A にいくつかのマネージャー シェル スクリプトがあります。私が使う

ssh username@other_server_ip < shell_script.sh

実行OKです。

これをpythonでやりたいです。私はこれをテストしました:

1\paramiko, 'exec_command (str)' is only run ONE command.and i use stdin to invoke_shell,not ok
2\pexect,sendline() is only ONE command.

助けてください、ありがとう!

(一部の AIX は sft をサポートしていないため、他のサーバーに sftp スクリプトを使用したくありません。)

次のようなシェルスクリプト:

#!/bin/sh
if [ $# -lt 1 ]
os=`uname`
if [ "$os" = "linux" ] || [ "$os" = "Linux" ]
then
  temp=`df -P $diskname| tail -1`
  if [ "$temp" = "" ]
  then
    echo "error!t=$diskname not found"
    exit 0
  fi
  # diskutil=`echo $temp|awk '{printf("%s",$5)}'|awk '{gsub("%",""); print $0}'`
  disk_size=`echo $temp | awk '{print $2}'`
  disk_size_mb=`expr $disk_size / 1024`
  disk_size=`echo | awk '{ printf("%.2f",(c1/1024.0)) }' c1=$disk_size_mb`
  disk_size="${disk_size}"

elif [ "$os" = "SunOS" ]
then
  temp=`df -k $diskname | tail -1`
  ....

elif [ "$os" = "AIX" ] || [ "$os" = "aix" ]
then
  temp=`df -k $diskname |tail -1|sed -e "s/%//g"`
  ....
else 
  echo "error!!=Unsupported platform: $os"
  exit
fi

echo "Total Size=$disk_size_mb"
4

1 に答える 1

0

Python からスクリプトをトリガーするだけで十分な場合subprocess.callは、標準ライブラリから使用します。あなたのスクリプトを見ると、おそらく並行して、多数のリモートホストで実行されていると思います。優れたファブリックモジュールをご覧になることをお勧めします。paramikoこれは、ローカルとリモートの両方でコマンドを実行し、ファイルを上下に転送するのを非常に容易にするラッパーです。

于 2012-06-04T12:47:12.383 に答える