Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/354.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python pxssh发送行字符串拆分并发送两行_Python_String_Bash_Format String_Pxssh - Fatal编程技术网

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

Python pxssh发送行字符串拆分并发送两行,python,string,bash,format-string,pxssh,Python,String,Bash,Format String,Pxssh,这是我在这里的第一个问题,我远不是专业的程序员,但我一直在研究,并没有发现任何类似的问题,这。。。我在标题中说的是pxssh realted,但实际上适用于许多Other案例。 当我试图格式化一个字符串以便通过pxssh发送一行时会出现问题,如果我试图将片段附加到字符串以形成完整的行,而不是以正确的顺序附加它们,则顺序会改变,并且las片段会出现在字符串的开头。我将展示我试图格式化的字符串类型,因为我认为它与字符/”有关 sed-i-e“s/.sringlinei”替换/StringIWantT

这是我在这里的第一个问题,我远不是专业的程序员,但我一直在研究,并没有发现任何类似的问题,这。。。我在标题中说的是pxssh realted,但实际上适用于许多Other案例。 当我试图格式化一个字符串以便通过pxssh发送一行时会出现问题,如果我试图将片段附加到字符串以形成完整的行,而不是以正确的顺序附加它们,则顺序会改变,并且las片段会出现在字符串的开头。我将展示我试图格式化的字符串类型,因为我认为它与字符/”有关

sed-i-e“s/.sringlinei”替换/StringIWantToPutInstead+stringfromffunctioninput1+.stringfromffunctioninput2/”文件i替换为编辑

我的代码看起来像这样,我为了重现错误而重新措辞,奇怪的是,当我使用从获取主机名的函数中得到的输出作为输入时,怎么只会出现错误的行格式,可能是一些我看不到的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()
我尝试用几种方式格式化发送行字符串,但每次都是这样,当我查看目标主机的bash历史记录时,我看到pxsh是如何发送两行的。 希望有人能帮上忙,我相信使用其他代码也可以得到同样的结果,但现在我只是好奇这背后有什么魔力:s

提前感谢!

侧注1:您的代码中有很多额外的括号,我不会在答案中重复这些括号。您不需要用括号括住对象来调用其方法/

SIDENOTE2:使用CapWords变量名不是一个好的做法。只使用并且应该使用这种命名方式


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

应采取以下措施:

computername = s.before.decode('utf-8').split('\r\n')[1]
SIDENOTE1:代码中有很多额外的括号,我不打算在答案中重复。调用对象的方法不需要用括号括起来/

SIDENOTE2:使用CapWords变量名不是一个好的做法。只使用并且应该使用这种命名方式


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

应采取以下措施:

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

简单且解决了!非常感谢!也感谢你的建议!不知道那辆车还车的事,我们会调查的。简单且解决了!非常感谢!也感谢你的建议!不知道那辆车还车的事,我们会调查的。