2017-02-06 7 views
1

이것은 내 첫 번째 질문이며 전문 코더와는 거리가 멀지 만 조사 중이며 이와 비슷한 문제는 발견되지 않았습니다. 제목은 pxssh가 realted지만, 실제로 많은 otehr 경우에 적용됩니다 보인다. 문제는 문자열을 pxssh를 통해 전송하려고 할 때 문자열을 포맷하려고 시도 할 때 문자열을 조각에 추가하려고 시도 할 때 올바른 순서로 문자열을 추가하는 대신 순서 변경과 las 단편이 문자열의 시작 부분에 나타납니다. 문자와 관련이 있다고 생각하기 때문에 서식을 지정하려고합니다. "파이썬 pxssh sendline 문자열 분할 및 두 줄 보내기

sed -i -e"s /. SringInLineIWantReplace. /StringIWantToPutInstead+StringFromFunctionInput1+.StringFromFunctionInput2/ "FileIWantToEdit이

내 코드는 내가 오류를 재현하기위한 고쳐 다음과 같이 보입니다, 내가 입력으로 얻을 함수의 출력을 사용할 때 잘못 라인을 포맷 할 일이 얼마나 단지 호기심의 호스트 이름, 어쩌면 내가 볼 수없는 몇 가지 풍경 문자 나 그런 종류의 있나요? : 여러 가지 방법으로 sendline 문자열의 형식을 시도했지만 나는 떠들썩한 파티로 볼 때 항상 같은 일이

from pexpect import pxssh 
import getpass 

def login(hostname): 
    try: 
     s.login (hostname, username, password) 
    except (pxssh.ExceptionPxssh, e): 
     print ("pxssh failed on login.") 
     print (str(e)) 

def logout(): 
    s.logout() 

def MyFunction(StringFromFunctionInput1,StringFromFunctionInput2): 
    line=("sed -i -e {}{}.{}{}") 
    completeline=(line.format('"s/.*SringInLineIWantReplace.*/StringIWantToPutInstead',StringFromFunctionInput1,StringFromFunctionInput2,'/" FileIWantToEdit')) 
    return(completeline) 

def GetHostname(): 
    s.sendline ("hostname") 
    s.prompt() 
    ComputerName=(((s.before).decode("utf-8")).split("\n"))[1] 
    return(ComputerName) 

username = "youruser" 
password = "yourpass" 
address="192.168.9.100" 
print(address) 
s = pxssh.pxssh() 
login(address) 
input2=str(GetHostname()) 
print(MyFunction("Hi",input2)) 
logout() 
s.close() 

의 마법 대상 호스트의 내역을 보면 pxssh가 두 줄을 보낸 방법을 알 수 있습니다. 희망을 누군가 도울 수 있기를 바랍니다. 같은 것을 얻을 수 있다고 확신합니다. 다른 코드를 사용하여 결과를 얻지 만 이제는 어떤 마법에 대해 궁금해합니다. S

미리 감사드립니다!

답변

0

SIDENOTE1 : 당신은 코드에서 여분의 괄호를 많이 사용하고 있습니다. 나는 답안에서 재현하지 않을 것입니다. 당신은

SIDENOTE2/메서드를 호출 괄호로 물체를 둘러싸 필요가 없습니다 : 그것은 CapWords 변수 이름에 좋은 방법이 아니다. class namestype variable names만이이 명명 stype을 사용해야합니다.


당신은 줄 바꿈과 pyexpect 응답에서 캐리지 리턴을 모두 제거해야합니다.

다음은이를 수행해야합니다 간편하고 해결

computername = s.before.decode('utf-8').split('\r\n')[1] 
+0

을! 고마워요! 그리고 제안을 주셔서 감사합니다! 그 캐리지 리턴 물건에 대해 몰랐는데, 그것으로 들여다 볼 것입니다. – lopalcar