Search code examples
bashwgetngrok

wget writes post responses to file, and I'm not sure why


I've got a bash script I use to create a ngrok tunnel, then I use dweet.io to post the tunnel address & port.

If that's meaningless to you, don't worry, essentially I'm using wget --post-data to post a string to an address.

This bash script is auto-started with a cron job.

while true
do
        #Gets the internal IP
        IP="$(hostname -I)"
        #Gets the external IP
        EXTERNALIP="$(curl -s https://canihazip.com/s )"

        echo "Dweeting IP... "

        TUNNEL="$(curl -s http://localhost:4040/api/tunnels)"
        echo "${TUNNEL}" > tunnel_info.json
        #Gets the tunnel's address and port
        TUNNEL_TCP=$(grep -Po 'tcp:\/\/[^"]+' ./tunnel_info.json )

        #Pushes all this information to dweet.io
        wget -q --post-data="tunnel=${TUNNEL_TCP}&internal_ip=${IP}&external_ip=${EXTERNALIP}" http://dweet.io/dweet/for/${dweet_id_tunnel}
        sleep $tunnel_delay
done

This works, however, the directory I start the script from gets spammed with files named

dweet_id_tunnel.1,

dweet_id_tunnel.2,

dweet_id_tunnel.3,

...

These contain the HTTP response from the wget --post-data from dweet.io.

As this script runs regularly, it's rather annoying to have a folder filled with thousands of these responses. I'm not sure why they're even made because I added the -q argument to wget, which should suppress responses.

Any idea what I need to change to stop these files being created?


Solution

  • wget fetches the response and saves it to a file; that's what it does. If you don't want that, add -O /dev/null, or switch to curl which seems to be more familiar to you anyway, as well as more versatile.

    The -q option turns off reporting, not downloading (i.e. progress messages etc, similar to curl -s).