0

我很抱歉我的英语不好。有一天我为我的问题搜索解决方案,但没有找到。

这是我的问题:我在服务器 A 中有一些管理器 shell 脚本。我用

ssh username@other_server_ip < shell_script.sh

运行正常。

我想在 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 脚本。)

像这样的shell脚本:

#!/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 回答