【问题标题】:use python ssh run local shell script to remote使用 python ssh 运行本地 shell 脚本到远程
【发布时间】:2012-06-04 20:47:12
【问题描述】:

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

这是我的问题: 我在服务器-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"

【问题讨论】:

    标签: python ssh paramiko


    【解决方案1】:

    如果仅从 Python 触发脚本就足够了,请使用标准库中的 subprocess.call。通过查看您的脚本,我猜它正在许多远程主机上运行,​​可能是并行运行的。您可能想看看出色的 fabric 模块。它是paramiko 的包装器,极大地促进了本地和远程运行命令以及上下传输文件。

    【讨论】:

      最近更新 更多