Например, рассмотрим этот фрагмент текста:
* Starting FTP server vsftpd [80G /usr/sbin/vsftpd already running.
[74G[ OK ]
* Starting RPC port mapper daemon rpcbind [80G
[74G[ OK ]
* Starting OpenBSD Secure Shell server sshd [80G
[74G[ OK ]
]0;root@cc334d73f202: ~root@cc334d73f202:~# curl https://go.microsoft.com/fwlink/?LinkID=760868
]0;root@cc334d73f202: ~root@cc334d73f202:~# [K
Если вы сохраните это в файл, а затем выполните команду cat, вы получите:
* Starting FTP server vsftpd /usr/sbin/vsftpd already running.
[ OK ]
* Starting RPC port mapper daemon rpcbind [ OK ]
* Starting OpenBSD Secure Shell server sshd [ OK ]
root@cc334d73f202:~# curl https://go.microsoft.com/fwlink/?LinkID=760868
root@cc334d73f202:~#
Я хочу как-то преобразовать существующий текст в этот более читаемый формат. (Вывод с управляющими символами был получен из вывода pexpect). Я использую child.logfile_read = f
для захвата вывода pexpect.
Я попытался удалить управляющие символы, но текст не так удобен для чтения, как если бы они были фактически обработаны.
Я также пытался cat file_name > new_file_name
, но это ничего не меняет.
Я просмотрел документы pexpect, чтобы увидеть, есть ли какие-либо встроенные функции для этого, но я мог найти что-нибудь. Интересно, что я не видел проблемы с paramiko (вывод из paramiko всегда чистый).
Я также пытался выяснить, как bash обрабатывает текст и управляющие символы, но не смог придумать способ обработки файла с управляющими символами.
Есть ли способ обработки этих управляющих символов?
Редактировать: Мой код pexpect:
def change_password(user, ip, password, logfile):
ssh = pexpect.spawn("ssh -p 21 " + user + "@" + ip)
# ssh.logfile_read = sys.stdout
ssh.logfile_read = logfile
ssh.expect("assword:")
ssh.sendline(old_password)
ssh.expect("#")
ssh.sendline("curl https://go.microsoft.com/fwlink/?LinkID=760868")
ssh.expect("#")