Isso pode ser feito com o módulo python pty: usando um pseudo-terminal para registrar todas as entradas e saídas de uma sessão de terminal .
Eu preciso capturar todos os comandos, stdout e stderr sem qualquer adição aos comandos.
Quer dizer, eu tenho que salvar / armazenar a saída destes:
- alex@bender:/pwd$ echo 'test'
- alex@bender:/pwd$ ls
- alex@bender:/pwd$ cat some_file
- alex@bender:/pwd$ fsdfsdfsd
- test
- test.txt some_file
- some file content
_4. fsdfsdfsd
Quanto à primeira parte da questão, encontrei o script, que usa uma armadilha e antes de avaliar o comando que armazena o comando para registrar. Mas e quanto ao armazenamento de saída? repita: isso deve ser resolvido sem quaisquer adições ao comando. Quero dizer, depois de executar o script, eu não preciso escrever, por exemplo, primeiro comando ls > log.file Eu quero ver sem " > log.file "
Eu escrevo algum script python, ele funciona como um wrapper de comando.
if name == 'main':
user = os.getlogin()
machine_name = os.uname()[1]
stdinbuff = open('commands', 'w')
stdoutbuff = open('outs', 'w')
command_string = 1
while command_string != '0':
a = user + '@' + machine_name + ":" + os.getcwd() + '>';
a = a.replace('/home/', '~/')
print a,
command_string = raw_input()
command_args = command_string.split()
proc = subprocess.Popen(command_args, stdout=subprocess.PIPE)
(out, err) = proc.communicate()
print out
stdinbuff.write(command_string+'\n')
stdoutbuff.write(out+'\n')
stdinbuff.close()
stdoutbuff.close()
mas neste wrapper, não consigo usar o preenchimento automático, como no bash, e esse script não pode armazenar tudo o que eu quero.
Talvez alguém possa me dizer o que devo fazer?
Isso pode ser feito com o módulo python pty: usando um pseudo-terminal para registrar todas as entradas e saídas de uma sessão de terminal .
Talvez a ferramenta screen
possa fazer o truque para você com a função de registro de tela. Simplesmente inicie screen
na linha de comando e com as chaves CTRL-a + H
(primeira Combinação de CTRL + a
e então uma letra maiúscula H com SHIFT + H
, apenas para esclarecer) tudo será registrado no arquivo screenlog.0
. O diretório onde o logfile é encontrado depende de onde você iniciou a tela, i. e. Se você iniciou a tela em seu $ HOME, então o arquivo de log será encontrado lá.
Tags command-line bash python capture