Python pxssh разделение строки отправки и отправка двух строк
Это мой первый вопрос, и я далек от профессионального программиста, но я занимался исследованиями и не обнаружил схожей проблемы с этим... Я указал в заголовке, что pxssh realted, но на самом деле относится ко многим другие дела кажутся. Проблема возникает, когда я пытаюсь отформатировать строку, чтобы отправить строку через 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
Заранее спасибо!
1 ответ
SIDENOTE1: В вашем коде много лишних скобок, которые я не собираюсь воспроизводить в ответе. Вам не нужно заключать объект в скобки для вызова его методов /
SIDENOTE2: Не рекомендуется использовать имена переменных CapWords. Только имена классов и имена переменных типов должны использовать этот стиль именования.
Вы должны удалить как новую строку, так и возврат каретки из pyexpect
ответ.
Следующие должны сделать это:
computername = s.before.decode('utf-8').split('\r\n')[1]