<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://stacky.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=147.46.215.206</id>
	<title>stacky wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://stacky.net/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=147.46.215.206"/>
	<link rel="alternate" type="text/html" href="https://stacky.net/wiki/index.php?title=Special:Contributions/147.46.215.206"/>
	<updated>2026-09-18T18:38:24Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.40.1</generator>
	<entry>
		<id>https://stacky.net/wiki/index.php?title=Scripts&amp;diff=769</id>
		<title>Scripts</title>
		<link rel="alternate" type="text/html" href="https://stacky.net/wiki/index.php?title=Scripts&amp;diff=769"/>
		<updated>2011-11-22T14:31:43Z</updated>

		<summary type="html">&lt;p&gt;147.46.215.206: /* unpnup */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Here are some scripts I&#039;ve written for various purposes.&lt;br /&gt;
&lt;br /&gt;
=AirBearsLogin.py=&lt;br /&gt;
&lt;br /&gt;
While at Berkeley, I would use this following script to log in to AirBears (the wireless network).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/usr/bin/python&lt;br /&gt;
#&lt;br /&gt;
# Replace USERNAME with your username and PASSWORD with your password.&lt;br /&gt;
# You may need to install the python mechanize module. The command&lt;br /&gt;
# sudo apt-get install python-mechanize&lt;br /&gt;
# might do the trick&lt;br /&gt;
&lt;br /&gt;
try:&lt;br /&gt;
    from mechanize import Browser&lt;br /&gt;
    import re&lt;br /&gt;
    br = Browser()&lt;br /&gt;
    br.open(&amp;quot;https://auth.berkeley.edu/cas/login?service=https%3a%2f%2fwlan.berkeley.edu%2fcgi-bin%2flogin%2fcalnet.cgi%3fsubmit%3dCalNet&amp;quot;)&lt;br /&gt;
    br.select_form(nr=0)&lt;br /&gt;
    br[&amp;quot;username&amp;quot;]=&amp;quot;USERNAME&amp;quot;&lt;br /&gt;
    br[&amp;quot;password&amp;quot;]=&amp;quot;PASSWORD&amp;quot;&lt;br /&gt;
    page = br.submit().read()&lt;br /&gt;
    errors = re.findall(&#039;&amp;lt;h2 id=&amp;quot;status&amp;quot; class=&amp;quot;error&amp;quot;&amp;gt;[^&amp;lt;]*&amp;lt;/h2&amp;gt;&#039;,page)&lt;br /&gt;
    if len(errors)==0:&lt;br /&gt;
        print &amp;quot;Logged into AirBears (probably).&amp;quot;&lt;br /&gt;
    else:&lt;br /&gt;
        for error in errors: print error[30:-5]&lt;br /&gt;
except IOError, e: print &amp;quot;Couldn&#039;t connect to wireless login page:\n&amp;quot;, e&lt;br /&gt;
except KeyboardInterrupt: print &amp;quot;Ouch! Ok, quitting.&amp;quot;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
I&#039;m quite pleased with the infromaiton in this one. TY!&lt;br /&gt;
&lt;br /&gt;
=djvu2pdf=&lt;br /&gt;
&lt;br /&gt;
A bash script I use for converting djvu to pdf so that I can read the document on a kindle or iLiad.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;code&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
# djvu2pdf script by Anton Geraschenko 2009; use at your own risk.&lt;br /&gt;
# requires djvulibre-bin and libtiff-tools&lt;br /&gt;
#&lt;br /&gt;
# &amp;quot;bug&amp;quot;: Blank pages get removed. You can tell this happened&lt;br /&gt;
#        if you see the message &amp;quot;ddjvu: Cannot render image&amp;quot;&lt;br /&gt;
&lt;br /&gt;
# exit codes&lt;br /&gt;
X_DDJVU_OR_TIFF2PDF=1&lt;br /&gt;
X_BAD_OPTION=2	&lt;br /&gt;
X_USER_INTERRUPT=13&lt;br /&gt;
&lt;br /&gt;
USAGE () &lt;br /&gt;
{&lt;br /&gt;
echo &amp;quot;Usage: `basename $0` [OPTIONS] FILE.djvu&lt;br /&gt;
Convert a djvu file into a pdf.&lt;br /&gt;
&lt;br /&gt;
-b		Keep blank pages. Not yet implemented.&lt;br /&gt;
-o OUTFILE	Set the output file to OUTFILE.&lt;br /&gt;
-q		Quiet mode.&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
clean_up ()&lt;br /&gt;
{&lt;br /&gt;
echo&lt;br /&gt;
[ $QUIET ] || echo &amp;quot;cleaning up&amp;quot;&lt;br /&gt;
if [ -e $tmpdir ]; then&lt;br /&gt;
	rm $tmpdir/pg[0-9]*.*&lt;br /&gt;
	rmdir $tmpdir&lt;br /&gt;
fi&lt;br /&gt;
}&lt;br /&gt;
&lt;br /&gt;
while getopts &amp;quot;o:qb&amp;quot; OPTION ; &lt;br /&gt;
do&lt;br /&gt;
    case &amp;quot;$OPTION&amp;quot; in&lt;br /&gt;
	b) echo &amp;quot;Sorry, the -b option is not yet implemented. Blank pages will be stripped out.&amp;quot; ;;&lt;br /&gt;
        o) OUTFILE=&amp;quot;$OPTARG&amp;quot; ;;&lt;br /&gt;
        q) QUIET=1&lt;br /&gt;
	   set +v ;;&lt;br /&gt;
        *) USAGE 1&amp;gt;&amp;amp;2 &lt;br /&gt;
           exit $X_BAD_OPTION ;;&lt;br /&gt;
    esac&lt;br /&gt;
done&lt;br /&gt;
shift $(($OPTIND - 1))&lt;br /&gt;
&lt;br /&gt;
if [ $# != 1 ] || [[ &amp;quot;$1&amp;quot; != *.djvu ]]; then&lt;br /&gt;
	USAGE 1&amp;gt;&amp;amp;2&lt;br /&gt;
	exit 1&lt;br /&gt;
else&lt;br /&gt;
	trap &#039;clean_up; exit $X_USER_INTERRUPT&#039; SIGINT&lt;br /&gt;
	tmpdir=`mktemp -d`&lt;br /&gt;
	pages=`djvudump &amp;quot;$1&amp;quot; | head -n2 | tail -n1 | sed -e &#039;s/^.*files \([0-9]*\) pages)/\1/&#039;`&lt;br /&gt;
	[ $QUIET ] || echo -n &amp;quot;converting page&amp;quot;&lt;br /&gt;
	for i in `seq -w $pages`; do&lt;br /&gt;
		[ $QUIET ] || echo -n &amp;quot; $i&amp;quot;&lt;br /&gt;
		ddjvu -format=tiff -page=$i &amp;quot;$1&amp;quot; $tmpdir/pg$i.tiff &amp;amp;&amp;amp;&lt;br /&gt;
		tiff2pdf -j -o $tmpdir/pg$i.pdf $tmpdir/pg$i.tiff || [ $?=10 ] || &lt;br /&gt;
		( echo encountered trouble;  exit $X_DDJVU_OR_TIFF2PDF; )&lt;br /&gt;
		# ddjvu exits with exit code 10 when the page is blank&lt;br /&gt;
		# if any other trouble comes up, exit&lt;br /&gt;
	done&lt;br /&gt;
	[ $QUIET ] || (echo ;echo -n &amp;quot;creating ${OUTFILE-${1%djvu}pdf}&amp;quot;)&lt;br /&gt;
	pdftk $tmpdir/pg[0-9]*.pdf cat output &amp;quot;${OUTFILE-${1%djvu}pdf}&amp;quot;&lt;br /&gt;
	clean_up&lt;br /&gt;
fi&lt;br /&gt;
&amp;lt;/pre&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=Scripts for managing notes=&lt;br /&gt;
==update.sh==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
#!/bin/bash&lt;br /&gt;
#&lt;br /&gt;
## tar the files into HalgSource.tgz&lt;br /&gt;
tar cfz HalgSource.tgz Halg.tex HalgPreamble.tex HalgBib.bib HalgLec??.tex HalgBibliography.tex&lt;br /&gt;
&lt;br /&gt;
## move HalgSource.tgz to the math servers and execute the mathupdate script&lt;br /&gt;
scp HalgSource.tgz $math:/home/u2/grad/anton/public_html/written/Halg&lt;br /&gt;
ssh $math bash /home/u2/grad/anton/public_html/written/Halg/mathupdate.sh&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==mathupdate.sh==&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
## untar the source&lt;br /&gt;
cd /home/u2/grad/anton/public_html/written/Halg/&lt;br /&gt;
tar xfz HalgSource.tgz -C ./&lt;br /&gt;
&lt;br /&gt;
## make sure all files are readable (maybe not necessary)&lt;br /&gt;
chmod 666 HalgLec??.tex&lt;br /&gt;
&lt;br /&gt;
## uncomment any \input commands that I had commented and uncomment table of contents&lt;br /&gt;
## (before I implemented this, people would often tell me that only the most recent lecture is posted)&lt;br /&gt;
cp Halg.tex halg.tex&lt;br /&gt;
sed -e &#039;s/\% \\input/\\input/g&#039; -e &#039;s/\% \\tableofcontents/\\tableofcontents/g&#039; halg.tex &amp;gt; Halg.tex&lt;br /&gt;
&lt;br /&gt;
## compile and convert to pdf&lt;br /&gt;
latex Halg.tex&lt;br /&gt;
latex Halg.tex&lt;br /&gt;
latex Halg.tex&lt;br /&gt;
dvips Halg.dvi -o Halg.ps&lt;br /&gt;
ps2pdf Halg.ps Halg.pdf&lt;br /&gt;
&lt;br /&gt;
## get rid of garbage&lt;br /&gt;
rm `ls | grep -ve .pdf -ve .sh -ve .tgz -ve .html -ve .sty -ve .txt`&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;/div&gt;</summary>
		<author><name>147.46.215.206</name></author>
	</entry>
</feed>