Scripts: Difference between revisions
m (Reverted edits by 147.46.215.206 (talk) to last revision by Anton) |
m (Protected "Scripts" ([edit=sysop] (indefinite) [move=sysop] (indefinite))) |
||
(3 intermediate revisions by 2 users not shown) | |||
Line 188: | Line 188: | ||
## get rid of garbage | ## get rid of garbage | ||
rm `ls | grep -ve .pdf -ve .sh -ve .tgz -ve .html -ve .sty -ve .txt` | rm `ls | grep -ve .pdf -ve .sh -ve .tgz -ve .html -ve .sty -ve .txt` | ||
</pre> | |||
= pinq = | |||
It's ping, but with trimmed output. | |||
<pre> | |||
#!/bin/bash | |||
ping ${*?" | |||
Usage: `basename $0` [OPTIONS] HOST"} | (trap '' SIGINT; sed -e 's/ttl=[0-9]* time=//' -e 's/.*: icmp_seq=//') | |||
# trap '' SIGINT is there so that if you hit CTRL-C, you still get the summary statistics from ping | |||
</pre> | </pre> |
Latest revision as of 06:20, 16 November 2012
Here are some scripts I've written for various purposes.
AirBearsLogin.py
While at Berkeley, I would use this following script to log in to AirBears (the wireless network).
#!/usr/bin/python
#
# Replace USERNAME with your username and PASSWORD with your password.
# You may need to install the python mechanize module. The command
# sudo apt-get install python-mechanize
# might do the trick
try:
from mechanize import Browser
import re
br = Browser()
br.open("https://auth.berkeley.edu/cas/login?service=https%3a%2f%2fwlan.berkeley.edu%2fcgi-bin%2flogin%2fcalnet.cgi%3fsubmit%3dCalNet")
br.select_form(nr=0)
br["username"]="USERNAME"
br["password"]="PASSWORD"
page = br.submit().read()
errors = re.findall('<h2 id="status" class="error">[^<]*</h2>',page)
if len(errors)==0:
print "Logged into AirBears (probably)."
else:
for error in errors: print error[30:-5]
except IOError, e: print "Couldn't connect to wireless login page:\n", e
except KeyboardInterrupt: print "Ouch! Ok, quitting."
unpnup
A modified version of Harald Hackenberg's unpnup bash script for converting two-page-per-page pdfs into one-page-per-page pdfs.
I've stopped using this script in favor of the awesome program Briss.
#!/bin/bash
#script: unpnup
# This script reformats pdf files where two portait pages
# are joined on one landscape page (like pnup does). After
# completion each page is on one single fullframe page
# Copyright (c) 2007 F5 GmbH
# Author: Harald Hackenberg <hackenberggmx.at>
#
#programs required:
# pdftk, pdftops, poster, epstopdf
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the
# Free Software Foundation; either version 2 of the License, or (at your
# option) any later version. See http://www.gnu.org/copyleft/gpl.html for
# the full text of the license.
#
# modified by Anton Geraschenko, 03-2009
if [ $# != 1 ] || [[ "$1" != *".pdf" ]]; then
echo "Usage: `basename $0` FILE.pdf"
else
tmpdir=`mktemp -d`
echo "bursting $1"
pdftk "$1" burst output $tmpdir/pg_%04d.pdf
cd $tmpdir
echo -n "converting "
for file in pg*.pdf; do
## if this loop runs into troublesome pages, try pdftops
## then ps2pdf then pdftops rather than just pdftops
echo -n "${file%.pdf} "
pdftops -eps $file
poster -pA4 -mA5 -c0% ${file%pdf}eps > ${file%pdf}tps
epstopdf --outfile=x$file ${file%pdf}tps | grep -i error
done
echo ""
cd - > /dev/null
pdftk $tmpdir/xpg*.pdf cat output "${1%.pdf}_unpnuped.pdf"
rm -r $tmpdir
fi
djvu2pdf
A bash script I use for converting djvu to pdf so that I can read the document on a kindle or iLiad.
#!/bin/bash
# djvu2pdf script by Anton Geraschenko 2009; use at your own risk.
# requires djvulibre-bin and libtiff-tools
#
# "bug": Blank pages get removed. You can tell this happened
# if you see the message "ddjvu: Cannot render image"
# exit codes
X_DDJVU_OR_TIFF2PDF=1
X_BAD_OPTION=2
X_USER_INTERRUPT=13
USAGE ()
{
echo "Usage: `basename $0` [OPTIONS] FILE.djvu
Convert a djvu file into a pdf.
-b Keep blank pages. Not yet implemented.
-o OUTFILE Set the output file to OUTFILE.
-q Quiet mode."
}
clean_up ()
{
echo
[ $QUIET ] || echo "cleaning up"
if [ -e $tmpdir ]; then
rm $tmpdir/pg[0-9]*.*
rmdir $tmpdir
fi
}
while getopts "o:qb" OPTION ;
do
case "$OPTION" in
b) echo "Sorry, the -b option is not yet implemented. Blank pages will be stripped out." ;;
o) OUTFILE="$OPTARG" ;;
q) QUIET=1
set +v ;;
*) USAGE 1>&2
exit $X_BAD_OPTION ;;
esac
done
shift $(($OPTIND - 1))
if [ $# != 1 ] || [[ "$1" != *.djvu ]]; then
USAGE 1>&2
exit 1
else
trap 'clean_up; exit $X_USER_INTERRUPT' SIGINT
tmpdir=`mktemp -d`
pages=`djvudump "$1" | head -n2 | tail -n1 | sed -e 's/^.*files \([0-9]*\) pages)/\1/'`
[ $QUIET ] || echo -n "converting page"
for i in `seq -w $pages`; do
[ $QUIET ] || echo -n " $i"
ddjvu -format=tiff -page=$i "$1" $tmpdir/pg$i.tiff &&
tiff2pdf -j -o $tmpdir/pg$i.pdf $tmpdir/pg$i.tiff || [ $?=10 ] ||
( echo encountered trouble; exit $X_DDJVU_OR_TIFF2PDF; )
# ddjvu exits with exit code 10 when the page is blank
# if any other trouble comes up, exit
done
[ $QUIET ] || (echo ;echo -n "creating ${OUTFILE-${1%djvu}pdf}")
pdftk $tmpdir/pg[0-9]*.pdf cat output "${OUTFILE-${1%djvu}pdf}"
clean_up
fi
Scripts for managing notes
update.sh
#!/bin/bash # ## tar the files into HalgSource.tgz tar cfz HalgSource.tgz Halg.tex HalgPreamble.tex HalgBib.bib HalgLec??.tex HalgBibliography.tex ## move HalgSource.tgz to the math servers and execute the mathupdate script scp HalgSource.tgz $math:/home/u2/grad/anton/public_html/written/Halg ssh $math bash /home/u2/grad/anton/public_html/written/Halg/mathupdate.sh
mathupdate.sh
## untar the source cd /home/u2/grad/anton/public_html/written/Halg/ tar xfz HalgSource.tgz -C ./ ## make sure all files are readable (maybe not necessary) chmod 666 HalgLec??.tex ## uncomment any \input commands that I had commented and uncomment table of contents ## (before I implemented this, people would often tell me that only the most recent lecture is posted) cp Halg.tex halg.tex sed -e 's/\% \\input/\\input/g' -e 's/\% \\tableofcontents/\\tableofcontents/g' halg.tex > Halg.tex ## compile and convert to pdf latex Halg.tex latex Halg.tex latex Halg.tex dvips Halg.dvi -o Halg.ps ps2pdf Halg.ps Halg.pdf ## get rid of garbage rm `ls | grep -ve .pdf -ve .sh -ve .tgz -ve .html -ve .sty -ve .txt`
pinq
It's ping, but with trimmed output.
#!/bin/bash ping ${*?" Usage: `basename $0` [OPTIONS] HOST"} | (trap '' SIGINT; sed -e 's/ttl=[0-9]* time=//' -e 's/.*: icmp_seq=//') # trap '' SIGINT is there so that if you hit CTRL-C, you still get the summary statistics from ping