【问题标题】:Disable remote prompt using pxssh使用 pxssh 禁用远程提示
【发布时间】:2021-10-23 17:51:47
【问题描述】:

我正在使用pxssh 登录并在远程服务器上发出一些命令。

我的代码如下:

def login(self):
  try:
     self.connection = pxssh.pxssh()
     self.password = getpass.getpass('Password: ')
     self.connection.login(self.host, self.username, self.password)
  except pxssh.ExceptionPxssh:
     raise("Failed to login.")

def send_command(self, command):
  try:
     self.connection.sendline(command)
     print(self.connection.before)
  except pxssh.ExceptionPxssh:
     print("Failed to execute command.")

def logout(self):
  try:
    self.connection.logout()
  except pxssh.ExceptionPxssh:
    print("Failed to logout.")

运行一些命令的输出是:

Downloading Terraform package.
b" unset PROMPT_COMMAND\r\n\x1b]0;test_user@d01c1ad4ad1c: ~\x07\x1b[01;32mtest_user@d01c1ad4ad1c\x1b[00m:\x1b[01;34m~\x1b[00m$ PS1='[PEXPECT]\\$ '\r\n"
Unzipping Terraform package
b" unset PROMPT_COMMAND\r\n\x1b]0;test_user@d01c1ad4ad1c: ~\x07\x1b[01;32mtest_user@d01c1ad4ad1c\x1b[00m:\x1b[01;34m~\x1b[00m$ PS1='[PEXPECT]\\$ '\r\n"
Cleaning up the terraform_0.11.2_linux_amd64.zip package
b" unset PROMPT_COMMAND\r\n\x1b]0;test_user@d01c1ad4ad1c: ~\x07\x1b[01;32mtest_user@d01c1ad4ad1c\x1b[00m:\x1b[01;34m~\x1b[00m$ PS1='[PEXPECT]\\$ '\r\n"
Move Terraform file
b" unset PROMPT_COMMAND\r\n\x1b]0;test_user@d01c1ad4ad1c: ~\x07\x1b[01;32mtest_user@d01c1ad4ad1c\x1b[00m:\x1b[01;34m~\x1b[00m$ PS1='[PEXPECT]\\$ '\r\n"

我想完全删除输出中包含unset 的所有行。是否有任何属性可以做到这一点,或者是否有任何解决方法?

【问题讨论】:

  • 如果可以的话可以分享一下详细代码吗?
  • @Sabil:导致我想删除这条额外行的原因是 pexpect 库或 Linux 操作系统。欢迎提出任何建议。

标签: python pexpect pxssh


【解决方案1】:

根据您的命令输出,我假设您正在运行 linux。

herehere 所述,PROMPT_COMMAND 似乎会影响您的提示。要禁用它,请尝试运行:

$unset PROMPT_COMMAND

为了永久效果,请将其添加到.bashrc

【讨论】:

  • 感谢您的建议。不幸的是,它不起作用。我已经在 .bashrc 或 /etc/profile 中添加了这一行,但是当我运行脚本时我仍然得到了额外的行。还有其他可以完成工作的解决方法吗?
  • 确保您没有忘记source .bashrc
猜你喜欢
  • 2012-02-28
  • 2018-05-02
  • 1970-01-01
  • 2019-09-25
  • 2018-01-05
  • 1970-01-01
  • 2018-09-07
  • 1970-01-01
  • 2021-07-01
相关资源
最近更新 更多