繁体   English   中英

Python pxssh sendline字符串拆分并发送两行

[英]Python pxssh sendline string splitting and sending two lines

这是我在这里的第一个问题,而且我远非专业编码员,但我一直在研究,并没有发现任何类似的问题...我在标题中说明了pxssh已经实现,但实际上适用于许多似乎有一些案例。 当我尝试格式化字符串以通过pxssh发送一行时,如果我尝试将片段附加到字符串以生成整行,而不是以正确的顺序附加它们,顺序更改和las片段,则会出现问题出现在字符串的开头。 我将展示我正在尝试格式化的字符串,因为我认为与字符/“有关

SED -i -e “S /。SringInLineIWantReplace。/StringIWantToPutInstead+StringFromFunctionInput1+.StringFromFunctionInput2/” FileIWantToEdit

我的代码看起来像这样我重写错误,很奇怪当我用作输入来获取主机名的函数的输出时,如果只是格式化错误的行,可能是一些我看不到的scape字符或者一些那种魔力?:

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()

我尝试以多种方式格式化sendline字符串,但总是相同,当我查看目标主机的bash历史时,我看到pxssh如何发送两行。 希望有人可以提供帮助,我相信使用其他代码可以得到相同的结果,但现在我只是好奇这背后是哪种魔法:S

提前致谢!

SIDENOTE1:你的代码中有很多额外的括号,我不会在答案中重现。 您不需要用括号括起一个对象来调用它的方法/

SIDENOTE2: CapWords变量名称不是一个好习惯。 只有类名类型变量名才能使用此命名类型


您需要从pyexpect响应中pyexpect换行符和回车符。

以下应该这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM