3

Я хотел бы передать данные с одного компьютера в командной строке на другой компьютер через TCP. Я думаю, я мог бы написать сервер сокетов, но это уже должно быть реализовано. Например, я мог бы использовать его, чтобы xz файл и отправить его по сети на другую сторону через указанный порт, где я мог бы декодировать и сохранить его:

машина A: strarc -c -d:c:/windows | xz -c -z - | magicsend -p 80 -h 192.168.1.100 машина B: magicreceive -p 80 | xz -d -f - | strarc -x -d:x:/windows

Я хотел бы сделать это в Linux и / или Windows с помощью инструментов с открытым исходным кодом. Поэтому инструменты Linux, имеющие [n неофициальный] порт Windows, предпочтительнее. :)

Рабочий пример командной строки высоко ценится.

(Обратите внимание, что в примере с Linux я бы использовал cat /vmlinuz вместо strarc, конечно, это не совсем эквивалентно. ;))

3 ответа3

3

Используйте netcat. См. Раздел «КЛИЕНТ / СЕРВЕР» в разделе "man netcat". Одна машина B:

nc -l 1234 | xz -c > sammy.xz

и на машине А:

cat sammy | nc 192.168.1.100 1234

Обратите внимание, что таким образом могут быть проблемы с безопасностью, если оставить порты открытыми.

Как указывает mpy, с точки зрения пропускной способности сети более эффективно сжимать на отправляющей стороне:

xz -c sammy | nc 192.168.1.100 1234

И просто сохранить на принимающей стороне:

nc -l 1234 > sammy.xz
2

Netcat должен соответствовать вашим потребностям; У меня нет под рукой документации, поэтому не могу быть уверен, но я думаю, что команда отправляющей стороны будет [...] | nc -h192.168.1.100 -p80 , в то время как принимающая сторона будет использовать nc -l -p80 | [...] .

1

Поскольку вам необходимо удаленно войти хотя бы на одну из машин (для запуска magicsend или magicreceive), можете ли вы просто использовать ssh?

Клиенты ssh легко доступны в Windows (например, просто установите cygwin). Серверы ssh также легко доступны, но их сложнее установить / настроить.

что-то вроде этого, если вы в данный момент находитесь на консоли машины A, а машина B удалена:

машина A: strarc whatever | xz -c -z - | ssh me@machineB '(xz -d -f - | strarc somethingelse)'

или если вы находитесь на консоли компьютера B и хотите выполнить удаленный вход на компьютер A, то:

машина B: ssh me@machineA '(strarc whatever | xz -c -z -)' | xz -d -f - | strarc somethingelse

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .