Tee не записывает вывод Netcat

у меня проблема между nc и tee, tee должен взять выходные данные nc и напечатать их в TXT-ФАЙЛЕ как вы все знаете. в kali он работает отлично, но в Ubuntu файл создается, но пустой . (в нем ничего не написано)
я использую python для вызова этой команды.

cmdping = "sleep 5; echo load_audio "+ids[i ][0]+"| nc 127.0.0.1 1234 | tee >> "+logtxt
p=subprocess.Popen(cmdping, shell=True, stderr=subprocess.PIPE)


Я думаю, что это проблема с разрешением, или нет, я не знаю, помощь приветствуется, спасибо.


person Z. Kiwan    schedule 13.07.2015    source источник
comment
Как называется и где находится файл logtxt? Как это соотносится с пользователем, под которым вы запускаете программу? Я бы также сказал, что tee принимает в качестве аргумента имя файла, и что | tee >> filename на самом деле не очень полезно, поскольку делает то же самое, что и >> filename. | tee filename будет писать в файл и на стандартный вывод   -  person Simon Fraser    schedule 13.07.2015
comment
я использую >> для добавления файла txt, logtxt — это комбинация пути, выбранного пользователем, и примера log.txt logtxt=path+"/log.txt" обычно путь находится где-то на рабочем столе.   -  person Z. Kiwan    schedule 13.07.2015
comment
Если вы распечатаете используемое значение logtxt, сможете ли вы записать в этот файл вне программы?   -  person Simon Fraser    schedule 13.07.2015
comment
Да, я могу писать в него вне программы, на самом деле файл создается, так что пока это не проблема.   -  person Z. Kiwan    schedule 13.07.2015
comment
Когда вы запускаете echo и nc, они все еще производят вывод? Если это так, возможно, стоит удалить весь | tee с конца, а затем прочитать из stdout и stderr, чтобы увидеть, может ли Python получить текст. Я бы попробовал более простую версию, без тройника, заменив | tee >> " + logtxt на >> " + logtxt, чтобы посмотреть, не является ли это ошибкой.   -  person Simon Fraser    schedule 13.07.2015
comment
на самом деле нет, когда я снимаю тройник, на терминале нет вывода ... это шокирует, все работает нормально на kali, но не на ubuntu ...   -  person Z. Kiwan    schedule 13.07.2015
comment
Возможно, разные версии netcat? Там другое поведение.   -  person Simon Fraser    schedule 13.07.2015
comment
о, можно, дайте мне взглянуть, пожалуйста   -  person Z. Kiwan    schedule 13.07.2015
comment
в Ubuntu его уровень патча Debian 1.105-7ubuntu1 в kali его 1.10-40, если это проблема, у вас есть идеи, как ее решить?   -  person Z. Kiwan    schedule 13.07.2015
comment
Навскидку, нет - возможно, есть другое значение по умолчанию, так что одна версия распечатывает то, что она получает, а другая нет?   -  person Simon Fraser    schedule 13.07.2015
comment
нашел решение, я опубликую его :) спасибо!   -  person Z. Kiwan    schedule 13.07.2015


Ответы (1)


После исследования я обнаружил, что Kali использует традиционный Netcat, но Ubuntu использует открытый BSD netcat, каждый из которых действует по-своему, все, что вам нужно сделать, это установить традиционный netcat, и все будет хорошо. Шаги по установке netcat приведены по ссылке ниже:

Как переключиться на netcat-traditional в Ubuntu?

person Z. Kiwan    schedule 13.07.2015