Команда выдает ошибку «пустой» архив, потому что вы ничего не передаете в tar для сжатия.
При использовании -f
после должно идти имя архива для создания и только потом архивы для сжатия (в вашем случае каталог ).
Для отправки на стандартный вывод для подачи в канал следует использовать фиктивную опцию/ярлык "-"
Как в:
tar -czf - Pictures | base64 | nc remote_host 443
Как также правильно указывает @muru, вывод tar на стандартный вывод по умолчанию, так что другой вариант, если убрать " -f".
tar -cz Pictures | base64 | nc remote_host 443
nc
также в теории также хорошо способен обрабатывать двоичные файлы, когда они не отправляются на консоль, вы можете обойтись без дополнительного шага кодирования и декодирования base64. Я, конечно, делал это тысячи раз, не используя base64.
Я бы также предпочел использовать nc
без -v для сценариев на удаленной стороне, как в:
tar -czf - Pictures | nc remote_host 443
nc -lp 443 > secret.tgz # remote host
ifconfig -s
для получения имен интерфейсов. Новое имя в стиле -для сетевого интерфейса USB может быть похоже на enxNNNNNNNNNNNN
, где NNNN...
— MAC-адрес интерфейса. Выходные данные ifconfig -s
усекают имя интерфейса до 8 символов, поэтому сгенерированное правило не будет соответствовать фактическому имени интерфейса.Вы можете заменить строку
INET_FACES=`$IFCONFIG -s | $GREP -vi 'kernel' | $GREP -vi 'iface' | $GREP -v 'lo' | $AWK '{print $1}'`
с:
INET_FACES=$(/bin/ls /sys/class/net | grep -v lo)
В общем, я бы не рекомендовал использовать случайные сценарии брандмауэра из Интернета, пока вы полностью их не прочтете и не поймете, что они делают . Однако, если вы хотите научиться работать с брандмауэром трудным путем, этот шестилетний сценарий может стать хорошей отправной точкой.