En primer lugar, si se trata de un dispositivo/iOT con un espacio limitado, me ocuparía de la salida en el lado de la llamada, es decir, usando el > después de los comandos ssh
como en
ssh "command" > output.txt
En cuanto a tcpdump
, no lo mataría como política todo el tiempo, arriesgándome a perder buffers. Es posible que no tenga salida tal vez debido a eso.
Pondría un límite a los paquetes capturados. También intentaría no resolver DNS. Como en, para capturar 100 paquetes:
tcpdump -nc 100 -i eth0 port 5600
Cuando almacene el archivo de captura en el sistema local, solo debe ejecutar cat
localmente y no de forma remota y local.
Del mismo modo, cuando ejecuta tcpdump
y cat
de forma remota, está iniciando ambos al mismo tiempo, y tanto el cat
remoto como el local no tendrán nada que mostrar.
Siguiendo la sugerencia de @MarkPlotnick, también agregué -l
a tcpdump
para que se búfer de línea. Eso puede obviar la necesidad de la opción -c
. Yo usaría ambos.
Entonces cambiaría ese guión por:
#!/bin/bash
html_tcpdumpfile=$(mktemp)
ssh remotemachine.mydomain.net "timeout -t 20 tcpdump -nlc 100 -i eth0 port 5060 " > $html_tcpdumpfile
cat $html_tcpdumpfile
rm $html_tcpdumpfile
O es posible que ni siquiera necesitemos crear explícitamente un archivo temporal:
#!/bin/bash
ssh remotemachine.mydomain.net "timeout -t 20 tcpdump -nlc 100 -i eth0 port 5060 " \
| less
Por último, recomendaría eliminar todos los archivos temporales creados, especialmente en el lado remoto.
PD :el OP mencionado en los comentarios, el sistema remoto es BusyBox y, como tal, las opciones timeout
son diferentes a las del paquete coretutils
. También edito la pregunta para que mencione BusyBox.
Убедитесь, что файл принадлежит вам и вашей группе:
chown youruser.yourgroup Secret
Убедитесь, что никто из вашей группы 'g' или других людей не может 'r'ead, 'w'rite, или e'x'ecute этот файл. '-' означает "отнять" разрешения. Таким образом, go-rwx означает, что у 'g'roup и 'o'ther, 'take away' the r, w, and x permissions.
chmod go-rwx Secret