Как вы закрываете соединение Netcat после получения данных? - PullRequest
1 голос
/ 30 января 2020

Ниже приведено очень простое использование netcat:

#!/bin/sh

echo "hello world" > original.txt
base64 original.txt > encoded.txt
cat encoded.txt | nc -l -p 1234 -q 0
#!/bin/sh

nc localhost 1234 -q 0 > received.txt
base64 -d received.txt > decoded.txt
rm received.txt encoded.txt
echo "Sent:"
md5sum original.txt
echo "Received:"
md5sum decoded.txt
rm decoded.txt original.txt

Это создает файл, кодирует его в base64, передает его через netcat, а затем декодирует его, наконец сравнивая является ли то, что было отправлено и получено, идентичным с помощью сравнения контрольной суммы.

На машине Kali Linux, которую я использовал ранее, соединение netcat закрывается при выполнении второго сценария, но пытается на Ubuntu дома это не так. Мне нужно вручную закрыть соединение с помощью Ctrl+D.

Как мне сделать так, чтобы соединение закрывалось после получения этих данных?

1 Ответ

1 голос
/ 30 января 2020

Я думаю, что включение флага -c для nc должно сделать это. Кроме того, вы уверены, что хотите использовать оболочку Bourne, а не Bash? Я бы предложил изменить свой шебанг на #!/bin/bash

...