分类: 'CLI软件' 的归档
用vpnc搞定cisco防火墙
公司某地的现场服务器,由于安全的需要,把cisco防火墙的VPN访问给打开了,然后给我们发了一个邮件,一看里面的附件,是个”Cisco VPN Client 4.7.00.0533.exe”,就知道怎么回事了,无视此邮件,自己去寻找开源的解决方案吧~
好在也还比较简单,as vpn以后(as is aliased to `eix -c’),出来几个软件,一看觉得vpnc比较顺眼,依赖少比较轻量,就emerge上了,然后就有了 /etc/vpnc/default.conf ,打开一看,几个配置项非常地简单明了,账号密码之类的一一填上即可。就是 IKE Authmode 这个选项,要和你的服务器管理器联系一下,才能确认,我这边用的psk。
然后,就可以启动vpnc了,方法是执行
|
1 |
sudo /etc/init.d/vpnc start |
然后,我这里由于用的是psk这个较弱的方式,出了点小错:
|
1 2 3 4 5 6 7 8 |
vpnc |* Starting VPNC: vpnc... vpnc |/usr/sbin/vpnc: peer selected (single) DES as "encryption" method. vpnc |This algorithm is considered too weak today vpnc |If your vpn concentrator admin still insists on using DES vpnc |use the "--enable-1des" option. vpnc | vpnc |* start-stop-daemon: failed to start `/usr/sbin/vpnc' [ !! ] vpnc |* ERROR: vpnc failed to start |
查看了一下man页,发现 –enable-1des 这个选项对应的配置文件行是:
|
1 |
Enable Single DES |
把此行加到 /etc/vpnc/default.conf 的末尾,再启动服务,就一切正常了。
ifconfig的结果会多出一个 tun0:
|
1 2 |
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:xxx.xxx.xxx.xxx P-t-P:xxx.xxx.xxx.xxx Mask:255.255.255.255 |
route的结果也会有tun0接口对应的路由,到此,就可以直接使用10.xxx.xxx.xxx这样的内网地址和特定的远程服务器进行通讯了。
当然,如果你要频繁使用某vpn的话,也可以将vpnc服务加载到启动级别里。
用脚本操作剪贴板
有时候,在脚本里操作剪贴板是很有用的,比如,你可以用scrot截屏以后贴到paste,然后把url直接放到剪贴板里,方便与人分享;又比如,你可以在选择了一段不和谐的文字的时候,通过按一个快捷键悄悄地把文字变成base64加密以后的内容发给好友;再比如,复制一个单词或者一段文字,按一个快捷键可以在剪贴板里放置翻译后的结果等等。当然肯定有更多方便的应用等你来发现。
在实现复杂应用之前,我们应该先对linux的剪贴板有个基础的了解,其实,linux(准确地说是带X的GNU/linux操作系统)的剪贴板分为3个:
1. 中键主剪贴板
2. 中键辅剪贴板
3. ctrl+v剪贴板
用过linux的朋友肯定都知道一个很方便的特性:鼠标选中一段文字就相当于windows的“复制”,然后在其他程序里按下鼠标中键就相当于“粘帖”,可以把刚才选中的文字粘帖出来。这个经常会让像我一样的linuxer养成一种习惯,以至于在朋友电脑上偶尔使用的windows的时候,也会经常点中键,却什么也出不来。。。同时,这也造成了linux比较损鼠标中键的现象,因为一般的杂牌鼠标,为了节约成本,鼠标中键的轴只有一端是固定的,所以这个轴很容易断,中键都很脆弱,没按几下会坏掉了,我的几个坏鼠标基本上都是中键不灵。。。
呃。。怎么说到鼠标去了,言归正传,这个用中键粘帖的剪贴板我们暂且称为“中键主剪贴板”,另外还有一个“中键辅剪贴板”,一般用户很少用到,“ctrl+v剪贴板”就无须多解释了,就是和windows一样的那个剪贴板,大家平时可能只把这个当成“正宗”的剪贴板吧。
xsel 是用脚本操作剪贴板时需要用到的命令,xsel同时支持这3个剪贴板,那么我们来看看xsel是如何区分这几个剪贴板的:
-p, –primary 指定操作 中键主剪贴板
-s, –secondary 指定 中键辅剪贴板
-b, –clipboard 指定 ctrl+v剪贴板
-x, –exchange 还可以交换 中键主剪贴板 和 中键辅剪贴板 ,这样辅就可以起到一个中间变量的作用了。
下面看看常用的操作:
-i, –input 从标准输入读入到剪贴板
-a, –append 往剪贴板里添加内容 (PS:我发现当某个剪贴板内容为空的时候,使用这个选项会导致xsel出现段错误,不知道是不是应该去报告bug)
-c, –clear 清除剪贴板的内容
-o, –output 输出剪贴板的内容
于是,有了这些好玩的操作,我本来这个
|
1 |
scrot /tmp/scrop_tmp.png -bcsd 3 -e "echo | upaste -image \$f ; rm \$f" |
贴图脚本就改成了这样了:
|
1 |
scrot /tmp/scrop_tmp.png -bcsd 3 -e "echo | upaste -image \$f | xsel -bi; rm \$f" |
这样帖完图以后,URL就直接在ctrl+v剪贴板里了,发给别人也相当轻松了,哈哈。。(upaste是帖东西到http://paste.ubuntu.org.cn,并返回url的perl脚本)
另外,你可以可以看看 xclip 等其他程序,如果有必要的话,下期再介绍啦,哈哈。
man2html (效果不是很理想)
有时候,要把man的内容发给别人看或者什么的,就有必要把man转换成其他格式了. 当然,对于带格式文本来说,html是个不错的选择.
搜索了一下,还真有个东西叫 man2html .可以直接emerge了使用.
例如,要把mplayer的man页转出来,需要执行下面的命令:
|
1 |
bzcat /usr/share/man/zh_CN/man1/mplayer.1.bz2 | man2html > mplayer.html |
但是,实际使用中发现,有些文本是会丢失的…
例如本来的man是这样的:
|
1 2 3 4 5 6 |
键盘控制 <- 和 -> 后退/快进 10 秒。 up 和 down 快进/后退 1 分。 ...... |
html之后,就成了:
|
1 2 3 4 5 6 7 |
键盘控制 s 后退/:快进 10 秒。 s 快进/:后退 1 分。 ...... |
把png转成ico的方法
如果你有个32×32的png图片,想转成ico,那就很简单了,直接:
|
1 |
convert x.png x.ico |
convert真的是简单地可怕啊~
当然,如果你是在windows下面,那你也可以用这个命令行工具.用法也有说明了,我就不多说了.
PS:以上方法也可以用于生成 favicon.ico
实时磁盘使用情况分析──iotop
你是否有这样的经历: 电脑用着用着,硬盘灯开始狂闪,硬盘也发出咯咯的读盘声,但是你又不知道到底是那个进程出了问题?
这时候你也许就要用到 iotop 了,这个小小的命令行工具的功能,只要看名字就可以明白,不就是 IO 的 top 嘛!而且,用法也和top很像哦,直接执行iotop会每秒汇报各进程的磁盘读速度和磁盘写速度,排序好以后输出.甚至 -b -n 之类的选项都是和top命令一样的: 执行 iotop -bn1 会输出当前各进程的磁盘IO信息,并退出~
另外,值得自己编译内核的用户注意的是,iotop需要打开 CONFIG_TASKSTATS 和 CONFIG_TASK_IO_ACCOUNTING 这两个内核选项才能正常工作.
音频处理领域的瑞士军刀──SoX
SoX 是命令行下的一套音频处理组件,由于其功能强大,号称”音频处理领域的瑞士军刀”.
那么SoX到底有什么功能呢?它可以播放/转换/录制多种音频格式文件,包括但不限于mp3/wav/ogg/flac/avi/wmv/pcm/gsm等,要了解完整的支持格式,可以参见官网的介绍.
其中,播放/转换/录制 分别对应 paly/sox/rec 几个命令,没错,大名鼎鼎的play命令正是SoX的组件之一,哈哈,现在感觉到它的强大了吧?
下面用几个例子来进一步说明,由于工作关系,经常接触到PCM和GSM的音频,幸好有SoX.就以这些文件为例,mp3之类的常用文件格式就更轻松了:
播放wav文件:
|
1 |
play -t wav hello-world.wav |
播放pcm文件,由于格式的不确定性,需要指定编码方式和码率,如果给的值不对,就会听到变调的声音了,哈哈:
|
1 |
play -t raw -r 8k -e a-law hello-world.pcm |
播放gsm文件:
|
1 |
play -t gsm hello-world.gsm |
把gsm文件转换成wav格式:
|
1 |
sox -t gsm hello-world.gsm hello-world.wav |
把gsm文件转换成8k采样率A率的pcm格式:
|
1 |
sox -t gsm hello-world.gsm -t raw -r 8k -e a-law hello-world.pcm |
把wav文件转换成8k采样率A率的pcm格式:
|
1 |
sox -t wav hello-world.wav -t raw -r 8k -e a-law hello-world.pcm |
把声卡的声音录制成wav格式,默认应该是48k采样率16bit量化的双声道Signed PCM编码.这些参数都可以指定:
|
1 |
rec -t wav rec.wav |
厉害吧~
另外,值得一提的是,由于libmagic包的故障,gentoo下的sox有时候不能根据扩展名来识别声音格式了,会报 no handler for detected file type `application/octet-stream; charset=binary’ 的错误,所以上述命令都加了-t参数直接指定格式,就没问题了.
一个命令把几千张照片压缩了
数码相机拍的照片,已经积累了很多个G了,于是就都备份到光盘里保存了,但是怎么处理硬盘上的数据呢?rm之觉得可惜,毕竟光盘没有那么方便,不能随时查看,但是放着又太大太浪费硬盘空间了,现在的相机一张都有3~4M的.我能想到的最好的办法,就是把每张照片压缩以后,把小图片留在硬盘上,这样即可以快速查看,又不是很浪费硬盘空间,于是有了这个命令:
注意此命令会删除当前目录及子目录下的所有jpg文件,最好是理解以后,再执行
|
1 |
find . -name '*.jpg' | while read i;do convert -resize 30% "$i" "${i%.jpg}_.jpg";rm "$i";done |
把当前目录及子目录下的所有 xx.jpg 压缩成横竖分辨率都为原尺寸的30%的 xx_.jpg 文件.对于我的相机来说,压缩后的大约800*600的大小对于屏幕浏览来说已经足够了,而每张300K左右的尺寸也很经济.
没有convert命令的同学需要检查是否装了 imagemagick 包.
PS:真庆幸自己没在用windows了,如果是win下,估计又得上网找所谓的”绿色版图像批处理软件”了,问题是:即使找到了,能完全合我的心意吗?称心了,要找注册码吗?找到注册码了,确定不含木马病毒吗…Orz
转:lsof用法小结
lsof在我看来算是那类很少用到却功能强大的生僻命令.因为生僻,所以经常忘记参数,而且2~3千行的man页,也经常会让人发晕.所以,偶尔看到这用法小结,转载记录一下,以便日后查找.
原文链接
lsof是一个用来显示被打开的文件的强大而有用的工具。在Unix系统中,任何事物都是文件(everything is a file),pipe是文件,IP sockets是文件,unix sockets是文件,目录是文件,设备是文件,inodes是文件。
一些有用的例子:
当在lsof后边没有跟任何参数时,该命令将会列出当前系统中被所有进程打开的所有文件
1 lsof|nl #nl命令打印出行号下边这几个命令指出打开某文件的进程
1234 lsof `which httpd` #那个进程在使用apache的可执行文件lsof /etc/passwd #那个进程在占用/etc/passwdlsof /dev/hda6 #那个进程在占用hda6lsof /dev/cdrom #那个进程在占用光驱下边将会打印出占用httpd可执行文件的进程的进程号(仅仅是进程号,在编写shell脚本是有用)
1 lsof -t `which httpd`显示出那些文件被以k打头的进程名的进程打开,以bash打头,和以init打头:
123 lsof -c klsof -c bashlsof -c init显示出那些文件被以courier打头的进程打开,但是并不属于用户‘zahn’
1 lsof -c courier -u ^zahn显示被zahn和apache打开的文件
1 lsof -u apache,zahn显示那些文件被pid为30297的进程打开:
1 lsof +p 30297显示所有在/tmp文件夹中打开的instance和文件的进程。但是symbol文件并不在列
1 lsof -D /tmp显示所有打开的端口
1 lsof -i显示所有打开80端口的进程
1 lsof -i:80显示所有打开的端口和UNIX domain文件:
1 lsof -i -U显示那些进程打开了到www.akadia.com的UDP的123(ntp)端口的链接:
1 lsof -iUDP@www.akadia.com:123—————————————————-
translated from@ www.akadia.com thank 寂寞烈火 for the reason of http://bbs.chinaunix.net/viewthr … &extra=page%3D5
—————————————————–
lsof还有很多参数,如果能够熟练使用将会对日常的系统管理非常有用。希望大家把一些还知道得技巧加以补充
BotCalk
谢谢lerosua写的介绍,我就基本上抄现成的了,哈哈~
BotCalk是近来我和lerosua搞起的一个项目,目的是丰富jabber聊天室里的聊天环境。目前你也许能在 linuxcn@conference.jabber.org 里遇到一个叫 iBot 的家伙,就是它了.
当然也是个学习的过程。主程序改自gloox里的聊天室测试代码。botcalk把聊天室里的消息发送到一个管道,而有个脚本读取消息处理后再发送到另一个管道上。botcalk会循环读这个管道,然后把信息发送出去。
原理有些粗糙,目前就这么实现了发送链接读取网页标题的功能。但bug在于机器人登录后似乎导致聊天室不太正常,吃掉某些人发出的信息。
BotCalk 代码地址在 http://code.google.com/p/botcalk/ ,通过svn取得吧
编译botcalk需要gloox 1.0beta2以上版本,
需要的配置文件bot.conf:
|
1 2 3 4 5 6 |
$ cat bot.conf jid=xxxx@gmail.com passwd=xxxxxxx server=talk.google.com port=5222 room=linuxcn@conference.jabber.org/myBot |
然后执行目录下的bot.sh即可。
目前这个机器人还很粗糙,所以以上仅学习参考使用.
PS: lerosua兄还写了个连载的小说,大家一起去围观吧~