तो मुझे एक प्रोग्राम मिला है जो रिमोट सर्वर पर 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 बाहर ले लिया।