/ / पायथन pexpect एक गतिशील मूल्य के साथ काम नहीं करेगा - पायथन, एसएसएच, pexpect

पायथन pexpect एक गतिशील मूल्य के साथ काम नहीं करेगा - पायथन, एसएसएच, pexpect

तो मुझे एक प्रोग्राम मिला है जो रिमोट सर्वर पर ssh होगा और उस अंत के एक आईपीरफ़ सेवर शुरू करेगा। जब यह चल रहा है तो वह क्लाइंट पक्ष से अलग हो जाएगा iperf।

यह ठीक काम करता है जब मैं आईपी पता स्थिर रूप से उदाहरण के लिए देता हूं:

        p=pexpect.spawn("ssh -t -x paddy@20.20.20.20 " + iperf)

लेकिन जब मैं उपयोग नहीं करता:

        p=pexpect.spawn("ssh -t -x paddy@"+ADDRESS+" " + iperf)

मुझे मिलता है:

"pexpect.TIMEOUT"

पता निश्चित रूप से सही ढंग से जा रहा है। किसी के पास क्या गलत हो रहा है के बारे में कोई विचार है?

    #!/usr/bin/env python
import pexpect
import re
import shutil
import getpass
import struct, fcntl, os, sys, signal, time

def start_Server(iperf, password, ADDRESS):
ssh_newkey = "Are you sure you want to continue connecting"
fix = ADDRESS+" " + iperf
p=pexpect.spawn("ssh -t -x paddy@"+ fix)
i=p.expect([ssh_newkey,"password:",pexpect.EOF,pexpect.TIMEOUT],1)
if i==0:
print "I say yes"
p.sendline("yes")
i=p.expect([ssh_newkey,"password:",pexpect.EOF])
if i==1:


pwtp = False
trysout = True
while pwtp == False:
trysout = True
p.sendline(password)
loginStuff=p.expect(["Permission denied, please try again.","Permission denied (publickey,password).", "------------------------------------------------------------", pexpect.TIMEOUT,pexpect.EOF],1)
if loginStuff == 0:
password = getpass.getpass("Please enter "+ADDRESS+""s Password")
elif loginStuff == 1:
print "Sorry but you faild to login"
sys.exit(0)
pwtp = True
trysout = False
elif loginStuff == 2:
pwtp = True
i=3
elif loginStuff == 4:
pwtp = True
pass
else:
pass

elif i==2:
print "I either got key or connection timeout"
pass
elif i==4:
print "I either got key or connection timeout"
pass
if i==3: #timeout
print fix
print ADDRESS
print "we find outselfs in a timeout"
print i
pass
return p, password


def RepresentsInt(s):
try:
int(s)
return True
except ValueError:
return False

var = raw_input("Enter the destination IP address: ")
ADDRESS = var

password = getpass.getpass("Please enter "+ADDRESS+""s Password")

t, password = start_Server("iperf -s", password, ADDRESS)

u, password = start_Server("iperf -u -s", password, ADDRESS)
print ADDRESS
p=pexpect.spawn("ssh -t -x paddy@20.20.20.20 iperf -u -s")
ssh_newkey = "Are you sure you want to continue connecting"
i=p.expect([ssh_newkey,"password:",pexpect.EOF])
if i == 0:
print ssh_newkey
elif i == 1:
print "password:"
elif i == 2:
print pexpect.EOF
else:
print "Sorry what!?"
print i

उत्तर:

जवाब के लिए 0 № 1

यह काम करता था जब मैंने subroutine से pexpect ssh बाहर ले लिया।