Всем привет!
Мне нужно захватить все команды, stdout и stderr без каких-либо дополнений к командам.
Я имею в виду, что я должен сохранить / сохранить вывод этих:
- $ echo 'test'
- $ ls -l
- $ cat some_file
commands.file
- alex @ bender:/pwd $ echo 'test'
- alex @ bender:/pwd $ ls
- alex @ bender:/pwd $ cat some_file
- alex @ bender:/pwd $ fsdfsdfsd
stdout.file
- тестовое задание
- test.txt some_file
- некоторый контент файла
stderr.file
_4. fsdfsdfsd
Что касается первой части вопроса, я нашел скрипт, который использует ловушку и перед оценкой команды сохраняет команду для регистрации. Но как насчет хранения результатов? повторяю: это должно быть решено без каких-либо дополнений к команде. Я имею в виду, что после запуска скрипта мне не нужно писать, например, первую команду ls > log.file. Я хочу увидеть ее без " > log.file ".
Я пишу некоторый скрипт на Python, он работает как командная оболочка.
если 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()
но в этой оболочке я не могу использовать автозаполнение, как в bash, и этот скрипт не может хранить все, что я хочу.
Может быть, кто-то может сказать мне, что я должен делать?