#!/bin/bash tunnel_entrance_port=13306 firstname.lastname@example.org destination=127.0.0.1 destination_port=3306 # Use netcat to connect to tunnel entrance port. If its exit code is not zero, the tunnel needs to be brought up nc -w1 localhost $tunnel_entrance_port > /dev/null if [[ $? -ne 0 ]]; then echo "creating new tunnel for MySQL" /usr/bin/ssh -f -N -L $tunnel_entrance_port:$destination:$destination_port $tunnel_end if [[ $? -eq 0 ]]; then echo " tunnel to $destination through $tunnel_end created successfully" else echo " an error occurred creating a tunnel to $destination through $tunnel_end" fi fi
#!/bin/bash # default username for this model export MODEMUSERNAME=admin # default password for model export MODEMPASSWORD=user12345 export COOKIE=/tmp/cookie_jar export CURL=/usr/bin/curl export PING=/bin/ping export GREP=/bin/grep export CUT=/usr/bin/cut $PING -c 5 google.com > /dev/null 2>&1 if [ $? -ne 0 ] then rm $COOKIE > /dev/null 2>&1 export OUTPUT=`$CURL -v -c $COOKIE 'http://$MODEMUSERNAME:$MODEMPASSWORD@192.168.1.1/resetrouter.html' 2>> /tmp/output` export SESSIONKEY=`echo "$OUTPUT" | $GREP var | $GREP sessionKey | $CUT -d"=" -f2 | $CUT -d"'" -f2` echo "kicking modem with session key $SESSIONKEY" export OUTPUT=`$CURL -v -c $COOKIE "http://$MODEMUSERNAME:$MODEMPASSWORD@192.168.1.1/rebootinfo.cgi?sessionKey=$SESSIONKEY" 2>> /tmp/output` fi
We’ve been using the Google Drive API uploader for quite a while now. The main lesson we took away from using Google service, specifically from their API is that things will break for more or less valid reasons. That’s not to say we’re unhappy with the way things are going, by and large Google provides amazing service.
To answer quirks, we’ve done everything from handling 2 http response codes to crawling folders to add & remove user permissions or they wouldn’t see the folders that were shared with their groups.
The last bug we’ve had on our radar for a while is that of the Video files that mysteriously would go unprocessed.Leave them for days they will never get encoded. Everything about the file is right but specifically the md5 checksum reported by Google. The only way to have it processed is to re-upload it. After months of chasing down such files we finally found a programmatic way to “kick” the processing.
When a file is in this state, it does not contain the “thumbnail” attribute, this is how you find them. Then if its “createdDate” attribute is older than X hours, you can run API calls to copy it and delete the original.
Of course this assumes you’re already knee deep into API land.