Disable remote prompt using pxssh

282 Views Asked by At

I am using pxssh to log in and issue some commands on a remote server.

My code looks like:

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.")

The output of running some commands is:

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"

I would like to completely remove all lines in the output that contains unset. Is there any attribute that does that or is there any workaround for that?

1

There are 1 best solutions below

2
On

From the output of your commands I assume you are running linux.

As described here and here, it seems the PROMPT_COMMAND affects your prompt. To disable it try to run:

$unset PROMPT_COMMAND

and for the permanent effect add this to .bashrc.