/ / python pexpect nebude pracovať s dynamickou hodnotou - python, ssh, pexpect

python pexpect nebude pracovať s dynamickou hodnotou - python, ssh, pexpect

Takže som mal program, ktorý bude ssh na vzdialený server a začať iperf sever od tohto konca. Keď to beží, bude to iperf, ktorý sa pretrhne od strany klienta.

Funguje to dobre, keď dám IP adresu staticky napríklad:

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

Ale nie keď používam:

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

Mám:

"pexpect.TIMEOUT"

ADDRESS rozhodne prebieha správne. Každý má nejaké predstavy o tom, čo sa deje?

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

odpovede:

0 pre odpoveď č. 1

Fungovalo to, keď som vybral šachovnicu ssh z podprogramu.