我很抱歉我的英语不好。 我有一天会在我的问题中搜索解决方案,但找不到。
这是我的问题: 我在服务器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"
答案 0 :(得分:0)
如果只是从Python触发脚本就足够了,请使用标准库中的subprocess.call
。从查看脚本开始,我猜它是在多个远程主机上运行的,可能并行运行。您可能想看一下优秀的fabric模块。它是paramiko
的包装器,它极大地方便了本地和远程运行命令以及上下传输文件。