SSH python脚本执行花费了太多时间

时间:2013-05-13 09:48:29

标签: python ssh

我正在使用python脚本ssh并连接两台用于运行iperf命令的pc,但脚本需要花费大量时间来执行。如何减少执行时间:脚本正在从eclipse IDE运行。

这是我正在使用的脚本:

import pexpect
import pxssh
import time
import os,re,sys



def tc01s(ipaddr,password):
try:

    ss = pexpect.spawn(ipaddr)
    print ipaddr    
        ss.logfile = open("/tmp/mynewlog", "w")
        #ss.logfile = sys.stdout
        print "SSH connecting"
        print 
except:
    print "connection refused"
    print
    #sys.exit()

    try:
        print password
    ss.expect (':')


        ss.sendline (password +"\n")
        print "connected"
        time.sleep(30)
        ss.expect (">")
        print "connection established"
        print
    except:
        print "Permission denied, please try again."
        print
        sys.exit()
    try:
        ss.sendline ('taskkill /F /IM iperf.exe\n')
        #time.sleep(30)
        ss.expect ('>')
        #os.system("D:\iperf-2.0.5-2-win32\iperf.exe -s\n")
        ss.sendline ('cd /D D:\iperf-2.0.5-2-win32')
        ss.expect ('>')
        ss.sendline ('iperf -s -u -f m -p 5000 -l 1470 -i 1')
        ss.expect (r'TCP window size: .*yte \(default\)')
        time.sleep(30)                
    except: 
        print 
        print
        #sys.exit()


###############################################################################
time.sleep(30)
def tc01c(ipaddr,password):

try:
    css = pexpect.spawn(ipaddr)
    css.logfile = open("/tmp/mynewlog", "w")
    #css.logfile = (sys.stdout)
    print "SSH connecting"
    print
except:
    print "connection refused"
    print
    sys.exit()
try:
    css.expect (':')
    css.sendline (password + "\n")
    print "connected"
    time.sleep(30)
    css.expect (">")
    print "connection established"
    print
except:
    print "Permission denied, please try again."
    print
    sys.exit()
try:
    #css.sendline ('taskkill /F /IM iperf.exe\n')
    print css.logfile
    css.expect ('>')
    css.sendline ('D:' + "\r")
    #css.sendline ('cd /D D:\iperf-2.0.5-2-win32')
    css.expect ('>')
    css.sendline ('dir' + "\r")
    css.sendline ('cd iperf ' + "\r")
    css.expect ('>')
    css.sendline ('iperf -u -f m -c 192.168.100.101 -p 5000 -b 3.00M -t 10 -l 1470 -i 1 \r\n')
    css.expect (r'TCP window size: .*yte \(default\)')          
    time.sleep(30)


except: 
    print 
    print
    #sys.exit() 

###############################################
the above code is executed using 
import os
import pexpect
import ssh
import time

ssh.tc01s("ssh user@192.168.100.101","pass123")
ssh.tc01c("ssh domain@192.168.100.85","123pass")    

2 个答案:

答案 0 :(得分:1)

正如评论者所提到的,没有代码,这可能真的很难回答。但是如果你不想/不能在这里附上代码,我会猜测一下:

  • 如果您正在运行可执行的SSH客户端,请尝试切换到library
  • 也许您正在运行的特定命令是慢的,而不是连接本身?尝试运行其他东西(更简单),以确保SSH连接速度慢。
  • 其他可能会让你失望的猜测:网络速度慢,接收端忙,主机忙,等等。

答案 1 :(得分:1)

如果建立连接需要很长时间,您可能需要在两台计算机的/ etc / ssh / sshd_config中禁用UseDNS选项。