在控制台使用 cd 命令时,用拼音自动补全中文路径
实验目录如下:
biff@lenovo:/domain/WorkSpace$ ls
SVN培训 全球眼 浙江建行 浙江农信
使用: (输完后按 TAB 键自动补全)
cd S <tab> 进入[SVN培训]
cd q <tab> 进入[全球眼]
cd z <tab> 自动补全[浙江]
cd zj <tab><tab> 提示[浙江建行 浙江农信]备选
cd 浙江j <tab> 进入[浙江建行]
cd zjj <tab> 进入[浙江建行]
cd zj1 <tab> 进入[浙江建行]
cd zj2 <tab> 进入[浙江农信]
配置:
找到 /etc/bash_completion 中 _file_dir() 函数,将
COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" )
改成 ( 其中chsdir为本脚的名字,注意指定路径和赋执行权限 )
chs=($(chsdir "x$1" "$cur"))
COMPREPLY=( "${COMPREPLY[@]}" "${toks[@]}" "${chs[@]}" )
( 这是最简单的,但也是最不安全的。还有其它的方法,比如将这段函数粘到$HOME/.bashrc文件中,在引用/etc/bash_completion之后再覆盖性的定义一遍。或者另起一个文件保存这段脚本,然后在.bashrc中用 . $HOME/bin/myscript.sh 导入一遍。注意小点点。)
( 上面的修改只对 cd 命令生效,如果其它地方也需要补全,比如vim,还要用相同的方法处理 _filedir_xspec() 函数 )
问题:
1、多音字无法解决,比如[浙江建行]要输入[zjjx];
2、可以用数字序号定位,但是现在序号有乱序问题,思考中...
有问题邮件联系!
祝Linux之行一路顺风!
版本更新在: https://groups.google.com/group/binsos/browse_thread/thread/1951b77a2cf4bfab
---------------------------------
google talk
shaozx@gmail.com
---------------------------------
2009年5月4日
2009年5月2日
时间和书
今天是五六年来第一次去电脑城买光盘,与其等上三四天时间从电骡上下载,不如打个车今天就把光盘买回来。
还有就是买书。
回想起来,差不多有十年没买过书了,因为不管找什么资料,网上都能找到。
书是朋友,时间是财富。
这就是时间的价值,我也是最近一年多才意识到有些时候时间比金钱重要。当然,这是有前提条件的,就是在有一定的经济基础之后。
大家可能也有这个毛病:每天泡在淘宝上看一款U盘,或者一部手机,连续关注了两三个月还是下不了决心买下来。
半年前,我想买个U盘,连续三四周的时间都在网上逛,比较性价比,比较哪个卖家信用高而且价格便宜。突然有一天,我想通了,一口气买了三个,两个4GB、一个8GB,一起花费了200块钱。该有的都有了,以后就再没去关心U盘的事情了。
为了这200块钱真的不值得每天花一个多小时逛淘宝。
为了这200块钱真的不值得每天花一个多小时逛淘宝。
还有就是买书。
回想起来,差不多有十年没买过书了,因为不管找什么资料,
但是还是应该买书回来看,特别的一本好书。“书非借不能读”,这是非常有道理的,不是每个人都能坚持把一本300页的PDF电子书从头看到尾,而买的纸质书就不一样了。
买书看,还有另外一个理由。一般网上找到的资料都是片段性的,比如装个Apache,或者学个新语言Python之类的,去网上找资料都会搜索某个针对性的问题,或是找快速入门参考,而很少能系统全面的学习。我指的是找“资料”,不是找“书”。如是上网找书的朋友,估计又遇到前面说到的问题,有很多人电脑里面存着大把的电子书,却没有一本书看完过。
书是朋友,时间是财富。
2009年4月29日
|EasyScripts|用GMail从控制台发送邮件的脚本
有时候需要备份些东西到邮箱,能够让脚本定时自动运行当然是最好!
抽时间用python写了这么个脚本,使用python-libgmail库 ( sudo apt-get install python-libgmail )
发送邮件的代码都是现成的调用,主要是在易用性上做了些优化:
1、发送一句话,不需要正文,比如给邮件列表发个“求助。。。。。(如题)”之类的:
msend -t list@domain.com -s "求助,图形界面进不了,哈哈”
2、发个文件到自已的邮箱,一般用 -f "file1;file2;file3;dir2;dir3" ,发懒的时候不写 -f 也能用
msend -t my@gmail.com -f readme.txt
msend -t my@gmail.com *.txt
3、发个文件或目录到某个邮箱,需要ZIP一下,(当然2和3可以混用)
msend -t friend@domain.com -z ./pics/
基本上:
1、目标邮箱和主题必须写上;
2、如果有文件附件,可以不指定主题,脚本会把文件数当主题名(gmail的title里会显示正文的)
3、程序会自动判断文件和目录,如果是目录就会遍历
4、不管是文件还是目录,如果前缀指定了-z,就压缩后发送
5、没有前缀的参数一律当文件名
如果有需要,可以下载玩玩,运行msend不带参数就有用法,应该很明白了。
(还有什么稀奇古怪的想法?欢迎提出来!)
Usage:
msend -t user@domain.com -s title
msend -t user@domain.com {-s title | -f file | -z file}
Full command:
msend --to=user@domain.com --subject=title [--msg=body] [--files="file1;dir2"] [--zip="file1;dir2"]
Example: ( edit ~/.msend for default sender account )
msend -t user@domain.com -s "just a test"
msend -t user@domain.com -s "send all pic" -f ./mypics/
msend -t user@domain.com -s "send files as zip" -z ./mytext/
msend -t user@domain.com -s "send both" -f mytext -z mytext
附件下载和更新在: https://groups.google.com/group/binsos/browse_thread/thread/1362719b1a34cd9b
2009年4月9日
Linux下有线和无线网络共存时优先使用无线网
用Linux下的NetworkManager 0.70(网络管理器小程序)遇到个问题:无线网络和有线网络同时启用时,系统默认优先使用有线网络--即默认路由使用的是有线网络的。
写了一个脚本解决这个问题,无线网卡和有线网卡同时启用时,优先使用无线路由器的网关。
代码如下:
------------------------------------
#!/bin/bash
# /etc/dhcp3/dhclient-exit-hooks.d/wireless-gw
# /etc/network/if-up.d/wireless-gw
WIRELESS=`iwconfig 2>/dev/null| awk 'NR==1 {print $1}'`
[ -z "$WIRELESS" ] && exit 0
gw=`ip addr show dev $WIRELESS | grep "inet " | awk 'NR==1 {print $2}'`
[ `echo $gw | awk -F. '{print NF}'` -ne 4 ] && exit 0
gw=`echo $gw | awk -F. '{printf("%s.%s.%s.1",$1,$2,$3)}'`
while [ `ip route | grep ^default | wc -l` -gt 0 ]
do
ip route delete default
done
ip route add default via $gw
#echo nameserver $gw > /etc/resolv.conf
echo nameserver 8.8.8.8 > /etc/resolv.conf
echo nameserver 208.67.222.222 >> /etc/resolv.conf
------------------------------------
脚本先取到无线网络设备名,依照设备名取到IP地址,然后假设无线路由地址是该IP段的第一个IP号,即xxx.xxx.xxx.1(通常无线AP都这样用的,暂时没有其它更好的办法),最后删除错误的默认路由,将无线网络的网关当作默认路由。
最后一句是修正DNS,如果DNS工作正常,可以去掉。
写好后放到/etc/network/if-up.d/ 和 /etc/dhcp3/dhclient-exit-hooks.d/下,命名为wireless-gw,赋执行权限。
(Ubuntu8.10下使用正常,其它发行版安放目录可能会有差异)
难道ubuntu里面就没有考虑这个问题?很奇怪!
写了一个脚本解决这个问题,无线网卡和有线网卡同时启用时,优先使用无线路由器的网关。
代码如下:
------------------------------------
#!/bin/bash
# /etc/dhcp3/dhclient-exit-hooks.d/wireless-gw
# /etc/network/if-up.d/wireless-gw
WIRELESS=`iwconfig 2>/dev/null| awk 'NR==1 {print $1}'`
[ -z "$WIRELESS" ] && exit 0
gw=`ip addr show dev $WIRELESS | grep "inet " | awk 'NR==1 {print $2}'`
[ `echo $gw | awk -F. '{print NF}'` -ne 4 ] && exit 0
gw=`echo $gw | awk -F. '{printf("%s.%s.%s.1",$1,$2,$3)}'`
while [ `ip route | grep ^default | wc -l` -gt 0 ]
do
ip route delete default
done
ip route add default via $gw
#echo nameserver $gw > /etc/resolv.conf
echo nameserver 8.8.8.8 > /etc/resolv.conf
echo nameserver 208.67.222.222 >> /etc/resolv.conf
------------------------------------
脚本先取到无线网络设备名,依照设备名取到IP地址,然后假设无线路由地址是该IP段的第一个IP号,即xxx.xxx.xxx.1(通常无线AP都这样用的,暂时没有其它更好的办法),最后删除错误的默认路由,将无线网络的网关当作默认路由。
最后一句是修正DNS,如果DNS工作正常,可以去掉。
写好后放到/etc/network/if-up.d/ 和 /etc/dhcp3/dhclient-exit-hooks.d/下,命名为wireless-gw,赋执行权限。
(Ubuntu8.10下使用正常,其它发行版安放目录可能会有差异)
难道ubuntu里面就没有考虑这个问题?很奇怪!
2009年1月14日
用python修改gnome网络代理
在家里用无线网络,不需要设置代理;在公司用局域网,需要指定代理才能上网。每次在两个地方换来换去都要手工切换代理。本来就是非常机械化的动作,干嘛不用程序自动解决呢?
今天试了一下写一个python的程序去修改代理设置,但是发现一个奇怪的问题:
用 gnome-network-preferences 修改代理地址和代理端口后 gconf-editor 中可以看到 /system/http_proxy/ 里面的值会发生变化,包括 host,port,use_http_proxy。修改以后 GNOME 全局的代理配置都会发生变化。
但是,用 gconf-editor 修改这些值以后,gnome-network-preferences 的配置项不会变化,GNOME 全局的代理配置也没有变化,修改不生效。
很奇怪啊。。。。。
上网查了一下,有人将这一情况作为BUG提交了。需要修改的地方是 /system/proxy/mode 。
https://bugs.launchpad.net/ubuntu/+source/gconf/+bug/290995
https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/271108
在 gnome-network-preferences 里面启用和禁用代理服务器后,/system/http_proxy/use_http_proxy 和 /system/proxy/mode 两个地方都被修改。可能其中一个值是历史遗留的吧。
今天试了一下写一个python的程序去修改代理设置,但是发现一个奇怪的问题:
用 gnome-network-preferences 修改代理地址和代理端口后 gconf-editor 中可以看到 /system/http_proxy/ 里面的值会发生变化,包括 host,port,use_http_proxy。修改以后 GNOME 全局的代理配置都会发生变化。
但是,用 gconf-editor 修改这些值以后,gnome-network-preferences 的配置项不会变化,GNOME 全局的代理配置也没有变化,修改不生效。
很奇怪啊。。。。。
上网查了一下,有人将这一情况作为BUG提交了。需要修改的地方是 /system/proxy/mode 。
https://bugs.launchpad.net/ubuntu/+source/gconf/+bug/290995
https://bugs.launchpad.net/ubuntu/+source/gnome-control-center/+bug/271108
在 gnome-network-preferences 里面启用和禁用代理服务器后,/system/http_proxy/use_http_proxy 和 /system/proxy/mode 两个地方都被修改。可能其中一个值是历史遗留的吧。
2008年12月25日
rhythmbox 歌词滚动的插件
一直找不到rhythmbox的歌词显示插件,抽空整了一个
基于网上原有的 ttplyrics 0.4 版本,参考 python-osd 和 musicapplet 的代码,凑出来的
我对python不熟,有需要的将就着用吧,期待python熟手进行优化
文件解包到 $HOME/.gnome2/rhythmbox/plugins/ttplyrics
biff@lenovo:~/.gnome2/rhythmbox/plugins/ttplyrics$ ls -l
总用量 36
-rw-r--r-- 1 biff biff 8370 2008-12-24 20:05 dbus_pyosd.py
-rw-r--r-- 1 biff biff 3473 2007-08-20 23:23 ttpClient.py
-rw-r--r-- 1 biff biff 14509 2008-12-24 20:16 ttplyrics.py
-rw-r--r-- 1 biff biff 333 2007-08-20 23:23 ttplyrics.rb-plugin
启动rhythmbox后,ttplyrics会取到歌词,歌词在 $HOME/.lyrics目录下,dbus_pyosd.py 会将歌词显到屏幕上。
可以单独运行 dbus_pyosd.py ,运行后 rhythmbox被自动启动,控制台有调试信息
附件和问题解决在这里下载
https://groups.google.com/group/binsos
--
---------------------------------
google talk
shaozx@gmail.com
---------------------------------
基于网上原有的 ttplyrics 0.4 版本,参考 python-osd 和 musicapplet 的代码,凑出来的
我对python不熟,有需要的将就着用吧,期待python熟手进行优化
文件解包到 $HOME/.gnome2/rhythmbox/plugins/ttplyrics
biff@lenovo:~/.gnome2/rhythmbox/plugins/ttplyrics$ ls -l
总用量 36
-rw-r--r-- 1 biff biff 8370 2008-12-24 20:05 dbus_pyosd.py
-rw-r--r-- 1 biff biff 3473 2007-08-20 23:23 ttpClient.py
-rw-r--r-- 1 biff biff 14509 2008-12-24 20:16 ttplyrics.py
-rw-r--r-- 1 biff biff 333 2007-08-20 23:23 ttplyrics.rb-plugin
启动rhythmbox后,ttplyrics会取到歌词,歌词在 $HOME/.lyrics目录下,dbus_pyosd.py 会将歌词显到屏幕上。
可以单独运行 dbus_pyosd.py ,运行后 rhythmbox被自动启动,控制台有调试信息
附件和问题解决在这里下载
https://groups.google.com/group/binsos
--
---------------------------------
google talk
shaozx@gmail.com
---------------------------------
Linux下远程登录的脚本
Linux下面没有象NetTerm或SecureCRT之类好用的登录管理工具,管理一大堆服务器地址和记住这些口令是件令人头痛的事情。
这是我自已用的一个自动登录脚本,支持SSH和TELNET。
分两个文件,to和to.hosts。
to 的用法是 to 跟主机名,如 to myserver,然后脚本就会自动在to.hosts文件里面找有没有定义这个主机,如果有,就取出主机地址、用户名、密码进行登录。
to.hosts文件可以定义多个主机,定义格式如下:
[demo1]
host=192.168.235.1
name=john
pass=john123
type=telnet
code=gb2312
[demo2]
host=192.168.1.77
name=hap
pass=hap
type=ssh
demo1/demo2是代号,如 to demo1 就会自动用telnet登录192.168.235.1主机。
host/name/pass是主机地址、登录用户名、口令
type可以是ssh或telnet,指定登录类型
code用来指定远端编码,如果你本地是终端用的UTF8,而远端是GB码,登过去后就会显示乱码,这时候可以指定自动进行编码转换
需要安装 python-pexpect 支持。
sudo apt-get install python-pexpect
将to文件放到PATH路径去,配置一个主机
biff@lenovo:~/bin$ to dxpt
dxpt@158.222.2.11's password:
短信平台11:/home/dxpt>
##################################################
# auto login success, have a lot of fun ... #
##################################################
ssh://dxpt@158.222.2.11
短信平台11:/home/dxpt>
---------------------------------------------
附件在这里下载
https://groups.google.com/group/binsos/browse_thread/thread/29fcf78c5c3236ee
如果你用上了,或有什么问题,请邮件联系我!
--
---------------------------------
google talk
shaozx@gmail.com
---------------------------------
这是我自已用的一个自动登录脚本,支持SSH和TELNET。
分两个文件,to和to.hosts。
to 的用法是 to 跟主机名,如 to myserver,然后脚本就会自动在to.hosts文件里面找有没有定义这个主机,如果有,就取出主机地址、用户名、密码进行登录。
to.hosts文件可以定义多个主机,定义格式如下:
[demo1]
host=192.168.235.1
name=john
pass=john123
type=telnet
code=gb2312
[demo2]
host=192.168.1.77
name=hap
pass=hap
type=ssh
demo1/demo2是代号,如 to demo1 就会自动用telnet登录192.168.235.1主机。
host/name/pass是主机地址、登录用户名、口令
type可以是ssh或telnet,指定登录类型
code用来指定远端编码,如果你本地是终端用的UTF8,而远端是GB码,登过去后就会显示乱码,这时候可以指定自动进行编码转换
需要安装 python-pexpect 支持。
sudo apt-get install python-pexpect
将to文件放到PATH路径去,配置一个主机
biff@lenovo:~/bin$ to dxpt
dxpt@158.222.2.11's password:
短信平台11:/home/dxpt>
##################################################
# auto login success, have a lot of fun ... #
##################################################
ssh://dxpt@158.222.2.11
短信平台11:/home/dxpt>
---------------------------------------------
附件在这里下载
https://groups.google.com/group/binsos/browse_thread/thread/29fcf78c5c3236ee
如果你用上了,或有什么问题,请邮件联系我!
--
---------------------------------
google talk
shaozx@gmail.com
---------------------------------
2008年9月15日
国内IT仍然是一片原始生态
今天看了Android开发竞赛的新闻,对这些中小型规模公司的运作存在一些想法,如果这样的公司在国内会是怎么样的呢?
从技术上讲,现在国内能够进行软件创新的人还不多,市面上能揽到的程序员质量都一般,招聘市场上有句话说:牛人都是靠介绍,不去招聘市场的。可以这么形容:国内这些牛人都如繁星点缀,还没有形成一个真正的人才集市。
从经济水平来讲,普通程序员的工资水平仍然停留在养家糊口的阶段,项目策划能力和对抗项目风险的能力不够。
从社会环境来说,政策和市场环境有一定的改善,但是行业竞争和模仿仍然不利于小公司的生存。
从技术上讲,现在国内能够进行软件创新的人还不多,市面上能揽到的程序员质量都一般,招聘市场上有句话说:牛人都是靠介绍,不去招聘市场的。可以这么形容:国内这些牛人都如繁星点缀,还没有形成一个真正的人才集市。
从经济水平来讲,普通程序员的工资水平仍然停留在养家糊口的阶段,项目策划能力和对抗项目风险的能力不够。
从社会环境来说,政策和市场环境有一定的改善,但是行业竞争和模仿仍然不利于小公司的生存。
2008年4月1日
Wikipedai 与 Blogspot 在中国解封
Moses 写道 :
"今天,除了中文 Wikipedia 以外的所有 Wikimedia 项目和 Blogspot 已经可以在中国访问。 包括 Wikipedia 在内的 Wikimedia 各个项目,连同 Blogspot 上的大多数 Blog,此前已经在中国被封锁很多年。今日的突然解封,可能只是一個愚人节玩笑?"
转自 http://internet.solidot.org
"今天,除了中文 Wikipedia 以外的所有 Wikimedia 项目和 Blogspot 已经可以在中国访问。 包括 Wikipedia 在内的 Wikimedia 各个项目,连同 Blogspot 上的大多数 Blog,此前已经在中国被封锁很多年。今日的突然解封,可能只是一個愚人节玩笑?"
转自 http://internet.solidot.org
2007年11月27日
只需 $299 就能拥有一套3D桌面系统
今天在国外的一个网站上看到 LINUX PC 的宣传
只要 299 美元!!你就能拥有一套3D桌面系统
1、从广告策划来讲,对消费者屏蔽了专业术语(其实很多人并不知道 LINUX 的)
2、从计算机来讲,大家都知道 XP 是没有 3D 桌面的,于是心理上给消费者一个"比 xp 更好"的感觉
宣传很到位,很经典!
只要 299 美元!!你就能拥有一套3D桌面系统
1、从广告策划来讲,对消费者屏蔽了专业术语(其实很多人并不知
2、从计算机来讲,大家都知道 XP 是没有 3D 桌面的,于是心理上给消费者一个"比 xp 更好"的感觉
宣传很到位,很经典!
2007年10月23日
Intel 声卡不能用 ALSA驱动
新买的T61用的Intel声卡,用Mplayer时只能用 OSS驱动,改成 ALSA 就报找不到声卡
今天偶然的切到另外一个新用户环境下面去,发现居然可以用ALSA,估计是老的环境变量设置引起ALSA的设置不对。
受了好几周的罪,今天终于解决了:
biff@lenovo:~$ asoundconf list
Names of available sound cards:
Intel
biff@lenovo:~$ asoundconf set-default-card Intel
biff@lenovo:~$
然后就OK了
(并不象网上所说的不能用ALSA驱动,也有可能是网上的资料有些老了)
今天偶然的切到另外一个新用户环境下面去,发现居然可以用ALSA,估计是老的环境变量设置引起ALSA的设置不对。
受了好几周的罪,今天终于解决了:
biff@lenovo:~$ asoundconf list
Names of available sound cards:
Intel
biff@lenovo:~$ asoundconf set-default-card Intel
biff@lenovo:~$
然后就OK了
(并不象网上所说的不能用ALSA驱动,也有可能是网上的资料有些老了)
2007年9月23日
用LINUX当桌面的4个理由
有时候想想为什么非要坚持着用LINUX当桌面,其实真的不如WINDOWS好用!
可能有这样几个理由:
1、因为LINUX上体现的都是最前沿的技术,作为一个搞技术的人,就是应该在最前沿的试验基地工作,这样才能跟上最新的技术发展,比如Ruby、Python、VM等等
2、很多方面,微软的技术比LINUX更先进,必竞资金更雄厚、人才储备更非富,但是,微软的特点是将技术的复杂性掩盖,所以,到了用户手上的东西都是傻瓜式的,这对学习技术是不利的
3、微软的垄断地位导致竖敌过多,与其一颗树上吊死,还不如脚踏两条船;虽然LINUX可能更短命,但是可能踩死它的人在技术上与其有相似性,比如FreeBSD、OpenSolaris,技术跨度相比WINDOWS要小
4、虽然LINUX成为主流桌面仍然希望渺茫,但是,既然WINDOWS是傻瓜式的操作系统,等到LINUX跨台了再回过头学WINDOWS也不迟,吃着碗里看着锅里,两头都不耽误
当然,这些都是针对技术人员的,所以,非技术人员是没有理由优先选用LINUX的!
可能有这样几个理由:
1、因为LINUX上体现的都是最前沿的技术,作为一个搞技术的人,就是应该在最前沿的试验基地工作,这样才能跟上最新的技术发展,比如Ruby、Python、VM等等
2、很多方面,微软的技术比LINUX更先进,必竞资金更雄厚、人才储备更非富,但是,微软的特点是将技术的复杂性掩盖,所以,到了用户手上的东西都是傻瓜式的,这对学习技术是不利的
3、微软的垄断地位导致竖敌过多,与其一颗树上吊死,还不如脚踏两条船;虽然LINUX可能更短命,但是可能踩死它的人在技术上与其有相似性,比如FreeBSD、OpenSolaris,技术跨度相比WINDOWS要小
4、虽然LINUX成为主流桌面仍然希望渺茫,但是,既然WINDOWS是傻瓜式的操作系统,等到LINUX跨台了再回过头学WINDOWS也不迟,吃着碗里看着锅里,两头都不耽误
当然,这些都是针对技术人员的,所以,非技术人员是没有理由优先选用LINUX的!
2007年9月8日
Google 离死亡还有多远?
本来 Google 用得好好的,好几年了没想过搬家
但是最近,情况真个儿的变了,Google 瞌睡了!!
先是 Google Talk 伤了心
一直不出 Linux 的语音版
群聊功能一拖再拖
其实 GFans 真的是非常强大的
我们都有信心将 Google 的产品支持到底
但是 GT 真的不如 QQ 好
想传个文件还真挺困难
所以门前冷清,也拉不到几个朋友过来凑数
你说说,啥时候咱 LINUX 上也能用上聊天室,用上语音视频?
当然,还有那把截屏的剪刀,眼馋啊
过了些时候,Google又出了输入法
咱等啊,等啊
就没声音了
咱是用五笔的,五笔是没指望了
咱是用 Linux 的,Linux 是没指望了
搜狗拼音咱没指望,可咱指望过你呀,
你不是支持 Linux 好多年了吗,还喊着要回报社区
群组里那么多人提五笔,渴望出个Linux版本,你咋就低调处理了呢
这段时间 QMail 不是闹得凶嘛
咱不用,也不能不去占个坑啊
又去瞧了瞧
嘿,QQ上的哥们那个活得快活
聊天那个多姿多彩
QMail?嗨,咱哥们都不瞧在眼里
人家把 QMail 就当个补充
腾讯有QQ占着桌面,邮件眨吧眨吧就出来了
哪像咱 Gmail 老是"请稍候"
不是开口闭口本地化吗,
咱是笨人,不明白都本地化了些啥
依我说,Gmail 真的得赶紧修理了
速度慢就不说了
那个该死的联系簿早该升升级了
功能简单得让人没法用
虽然邮件线索和集成搜索是有点新意
那也是好多年前的事了,现在别人早学去了
再说咱开的那个 blogspot 吧
咱给自己取个名字叫"二进制生存"
这回可好,名字起的不吉利,完全活不下去了
天天琢磨着代理呀网关呀
这事其实不怪你,咱不也挺赞赏你这点傲骨
后来feedburner的事不是也没人说你什么
可是最近人家要搞和谐,你干嘛也跟着凑热闹呢
该咋干咋干,该是怎么样就是怎么样
怎么为了一点点商业利益就又没骨气了呢
调过头,去 sohu 开了个博客
咳,这都是些啥玩艺,花里胡哨的
小张同志就不是搞技术的料,
你的东西嘛
就留给十七八岁小年青发唠叨用吧
还没得意上两天
赶上 Yahoo 邮箱打广告了
捡回来四五年没怎么用的帐号一看
人家 Yahoo 重振旗鼓,博客邮件相册该有的都有
东西嘛,做得还是有模有样,是个做门户的样子
虽然人家是副鬼子嘴脸,可也没得罪咱
东西能用就咱将用着呗
停在 Yahoo 里转悠转悠
发现人家的访问速度还是要快好多
还有,相册也精致些
咱中国人不就爱个小巧玲珑,整洁美观
哪像Picsas里面一个像册封面有巴掌大
反正 Picsas 是真的不好用
速度慢不说吧,
想把照片归归类什么的
管理起来还真的有点困难
这骂人骂上了就停不下来,可是骂多了就没意思了
还剩点什么?
PageCreater 不好用,从一开始就没有好用过
NoteBook ,貌似用的人不多,Google也没在上面多花心思
iGoogle 本来想拿来当首页,可搜索框没有趋势提示,也是个半调子
Groups 还行,不过本来就是旧瓶装新酒,也好久没升级过了
Docs 前景光明,多抽点时间在国内大力推广吧,酒香也怕巷子深
Calendar ,不整合到桌面就没前途,人家 QQ 已经先行一步了
BrowerSync 完全是扯淡,把我的收藏夹搞得乱七八糟,再不敢用 了
Analytics 很好,很强大!但是我从来没想过用它来分析广告
还有 adsence,咱没用,可一门心思用它搛钱的人没一个老实的
看明白没有
Google是干什么的,它就是一广告公司
Google在干什么,它专注广告推销
Google关心谁,它曾经关注技术
等到哪天Google忘了它是靠技术 No.1 起家的
等到哪天Google技术不再是 No.1 了
等到Google不关照我们这些搞技术的 GFans 了
那时我们也会厌烦天底下所有搞广告推销的
其实我们本来就讨厌广告
此一时,彼一时,谁知道 Google 什么时候倒闭!
为了防止被口水淹死,多补充一句
我也是 GFans
但是今天主要是批斗Google,大家就不要把矛头指向我了
年中多总结,年底才能有个好收成
好话放到年底再说吧
希望不要到了年底表彰变成了悼文!
--------------------------
??? 哪位兄台帮我放到 cnbeta 上去晒晒,看看能收多少口水! ???
--------------------------
但是最近,情况真个儿的变了,Google 瞌睡了!!
先是 Google Talk 伤了心
一直不出 Linux 的语音版
群聊功能一拖再拖
其实 GFans 真的是非常强大的
我们都有信心将 Google 的产品支持到底
但是 GT 真的不如 QQ 好
想传个文件还真挺困难
所以门前冷清,也拉不到几个朋友过来凑数
你说说,啥时候咱 LINUX 上也能用上聊天室,用上语音视频?
当然,还有那把截屏的剪刀,眼馋啊
过了些时候,Google又出了输入法
咱等啊,等啊
就没声音了
咱是用五笔的,五笔是没指望了
咱是用 Linux 的,Linux 是没指望了
搜狗拼音咱没指望,可咱指望过你呀,
你不是支持 Linux 好多年了吗,还喊着要回报社区
群组里那么多人提五笔,渴望出个Linux版本,你咋就低调处理了呢
这段时间 QMail 不是闹得凶嘛
咱不用,也不能不去占个坑啊
又去瞧了瞧
嘿,QQ上的哥们那个活得快活
聊天那个多姿多彩
QMail?嗨,咱哥们都不瞧在眼里
人家把 QMail 就当个补充
腾讯有QQ占着桌面,邮件眨吧眨吧就出来了
哪像咱 Gmail 老是"请稍候"
不是开口闭口本地化吗,
咱是笨人,不明白都本地化了些啥
依我说,Gmail 真的得赶紧修理了
速度慢就不说了
那个该死的联系簿早该升升级了
功能简单得让人没法用
虽然邮件线索和集成搜索是有点新意
那也是好多年前的事了,现在别人早学去了
再说咱开的那个 blogspot 吧
咱给自己取个名字叫"二进制生存"
这回可好,名字起的不吉利,完全活不下去了
天天琢磨着代理呀网关呀
这事其实不怪你,咱不也挺赞赏你这点傲骨
后来feedburner的事不是也没人说你什么
可是最近人家要搞和谐,你干嘛也跟着凑热闹呢
该咋干咋干,该是怎么样就是怎么样
怎么为了一点点商业利益就又没骨气了呢
调过头,去 sohu 开了个博客
咳,这都是些啥玩艺,花里胡哨的
小张同志就不是搞技术的料,
你的东西嘛
就留给十七八岁小年青发唠叨用吧
还没得意上两天
赶上 Yahoo 邮箱打广告了
捡回来四五年没怎么用的帐号一看
人家 Yahoo 重振旗鼓,博客邮件相册该有的都有
东西嘛,做得还是有模有样,是个做门户的样子
虽然人家是副鬼子嘴脸,可也没得罪咱
东西能用就咱将用着呗
停在 Yahoo 里转悠转悠
发现人家的访问速度还是要快好多
还有,相册也精致些
咱中国人不就爱个小巧玲珑,整洁美观
哪像Picsas里面一个像册封面有巴掌大
反正 Picsas 是真的不好用
速度慢不说吧,
想把照片归归类什么的
管理起来还真的有点困难
这骂人骂上了就停不下来,可是骂多了就没意思了
还剩点什么?
PageCreater 不好用,从一开始就没有好用过
NoteBook ,貌似用的人不多,Google也没在上面多花心思
iGoogle 本来想拿来当首页,可搜索框没有趋势提示,也是个半调子
Groups 还行,不过本来就是旧瓶装新酒,也好久没升级过了
Docs 前景光明,多抽点时间在国内大力推广吧,酒香也怕巷子深
Calendar ,不整合到桌面就没前途,人家 QQ 已经先行一步了
BrowerSync 完全是扯淡,把我的收藏夹搞得乱七八糟,再不敢用 了
Analytics 很好,很强大!但是我从来没想过用它来分析广告
还有 adsence,咱没用,可一门心思用它搛钱的人没一个老实的
看明白没有
Google是干什么的,它就是一广告公司
Google在干什么,它专注广告推销
Google关心谁,它曾经关注技术
等到哪天Google忘了它是靠技术 No.1 起家的
等到哪天Google技术不再是 No.1 了
等到Google不关照我们这些搞技术的 GFans 了
那时我们也会厌烦天底下所有搞广告推销的
其实我们本来就讨厌广告
此一时,彼一时,谁知道 Google 什么时候倒闭!
为了防止被口水淹死,多补充一句
我也是 GFans
但是今天主要是批斗Google,大家就不要把矛头指向我了
年中多总结,年底才能有个好收成
好话放到年底再说吧
希望不要到了年底表彰变成了悼文!
--------------------------
??? 哪位兄台帮我放到 cnbeta 上去晒晒,看看能收多少口水! ???
--------------------------
2007年9月1日
在 Linux 上使用 Ipmsg 的事项
本文介绍g2ipmsg的安装使用注意事项,包括无法编译安装、显示乱码、安装后无声音、无法传送中文文件名、接收中文文件名乱码等
1、版本选择 --使用2007版的 g2ipmsg。
这是 2007 新开发的 ip messenger ( www.ipmsg.org ),基于 GTK 库,可以单独执行或作为 Applet 放在面板上使用,功能比以前的 JAVA 和 X 版本的完善和稳定--JAVA版不支持文件收发,旧版本好象都不支持接收目录。
如果急用,建议可以先试试用 Wine 跑 win 版本的 ipmsg,但是也不支持接收和发送目录
下面说一下g2ipmsg安装的注意事项
2、解决乱码
下载g2ipmsg解包后找到 g2ipmsg-0.9.1/src/code.c
将文件顶部的宏定义改成
#define IPMSG_INTERNAL_CODE "UTF-8"
#define IPMSG_PROTO_CODE "CP936"
然后重新编译
3、运行 ./configure 不通过
执行 ./configure --prefix=/usr --sysconfdir=/etc --enable-systray
如果不带 --enable-systray ,就不会生成 applet
可以在 make 的时候看一下你的系统差些什么,参照着补全
只要所有组件都齐全,不会有什么问题
需要注意的是:GST是 GStreamer 的 dev 开发包,如果不装也可以编译通过,但是运行的时候新消息没有声音提示
另外网上还有其它的一些报错,比如 gcc 未安装、gettext未安装等,可以依据报出来的错到 google 上搜一下
4、安装后面板的 applet 清单里找不到 g2ipmsg
造成这种情况的可能性很多,可以试一下重启 面板 ( pkill gnome-panel;gnome-panel& )再看看
还可以试一下将 /usr/bin/g2ipmsg 和 /usr/bin/g2ipmsg_applet 拷贝到 /usr/local/bin 下面去(ubuntu )
应该来说Deb安装都不会出现这样的问题,尽量用Deb包安装就没问题,但是网上有些Deb包安装后是日文码的,显示界面里面的中文人名全是乱码,还有些是声音的问题没有解决
可以试着先装Deb包,然后将 make 好的 g2ipmsg 和 g2ipmsg_applet 拷贝过去覆盖

5、无法发送中文文件
因为 g2ipmsg 用 GTK 库写的,如果你的文件名编码是 GB 的,发送时文件名会是乱码,对方就会收到一个空消息,
在发送前将文件名换成 utf-8 的就没有问题了 ( convmv -f gb2312 -t utf8 --notest 测试文档.txt ),可以查阅一下 convmv 的相关用法,如果需要将整个目录里所有文件名换成 utf8 ,用 -r 就行了
还有,如果文件夹名是GB编码的,那么文件夹里面的文件不论是什么编码都无法传送,
6、接收的文件乱码
接收到的文件名总是以 UTF-8 编码的,因为文件管理器 ( Nautilus ) 可以正常显示UTF和 GB 编码的文件名,即始 不同编码的文件名放在一个目录下面,也会显示得很好,但是在终端里看会看到部分文件名正常,另外一些是乱码,这时候也需要用 convmv 将文件名转换一下
7 、新消息没有声音
看一下选项里的声音钩上没有,如果无法选中,参考第3步 configure 中的 GST 部分
2007年8月31日
穿透HTTP代理用 python-xmpp 给 google talk 发消息
python-xmpp 实现了 jabber 的大部分协议,能够用 python 发 jabber 消息
因为 google talk 本身就是基于 jabber 协议扩展的,所以也能给 google talk 发消息
早期的 python-xmpp 不支持 SSL 认证登录,所以只能登到一些非SSL认证的服务器,如 Jabber.org ,再给 google talk 的用户发消息,新版本已经解决这个问题。我现在使用的版本里 auth.py 是 v 1.35 2006/01/18 19:26:43
auth的参数是(节点,密码)
j_CLIENT.auth('shaozx','password')
第一次写的时候传入了 user@gmail.com 导致程序报错,后来跟踪调试,找到了第 143行,
它的本意是通过 user@gmail.com 截断得到 gmail.com,然后 DNS 解晰得到实际服务器 talk.l.google.com,
最后组合得到 user@talk.l.google.com,可是程序里几个变量都叫 server ,把自已也搞糊了!
140 if "DIGEST-MD5" in mecs:
141 node=Node('auth',attrs={'xmlns':NS_SASL,'mechanism':'DIGEST-MD5'})
142 elif "PLAIN" in mecs:
143 sasl_data='%s\x00%s\x00%s'%(self.username+'@'+self._owner.Server,self.username,se lf.password)
144 node=Node('auth',attrs={'xmlns':NS_SASL,'mechanism':'PLAIN'},payload=[base64.enco destring(sasl_data)])
145 else:
146 self.startsasl='failure'
147 self.DEBUG('I can only use DIGEST-MD5 and PLAIN mecanisms.','error')
148 return
我现在使用的python-xmpp里带的 transport .py 版本是 transports.py,v 1.28 2006/01/26 13:09:35
我修改屏蔽了第 182 行,否则使用代理服务器的时候总是报错,无法认证成功,还没想明白为什么
172 def send(self,raw_data):
173 """ Writes raw outgoing data. Blocks until done.
174 If supplied data is unicode string, encodes it to utf-8 before send."""
175 if type(raw_data)==type(u''): raw_data = raw_data.encode('utf-8')
176 elif type(raw_data)<>type(''): raw_data = ustr(raw_data).encode('utf-8')
177 try:
178 self._send(raw_data)
179 # Avoid printing messages that are empty keepalive packets.
180 if raw_data.strip():
181 self.DEBUG(raw_data,'sent')
182 #self._owner.Dispatcher.Event('', DATA_SENT, raw_data)
183 except:
184 self.DEBUG("Socket error while sending data",'error')
185 self._owner.disconnected()
如果是直接连接互联网,connect的写法如下:
j_CLIENT.connect()
中间如果有代理服务器,connect的写法如下:
j_CLIENT.connect(proxy={'host':'192.168.1.254','port':8080,'user':'guest','password':'cisco'})
注意 port 变量是整型,用程序代码生成proxy的时候格外要注意,不然会报错
可以参考 python-xmpp 的API文档
如果从命令行或其它地方传入文本,还需要注意编码转换
msg = unicode(msg,'gb18030').encode('utf8')
然后再发送出去
j_CLIENT.send(xmpp.Message('接收者',msg))
sendInitPresence(50)是置发送者状态为“在线”,置发送者状态后接收方会多弹出一个“XXX上线”的消息,我遇到过Palm上的一个jabber客户端,登录成功后就置了一个 0 ,然后死活发不出去消息,晕倒!
自带的程序原型 xsend.py 简化如下:
#!/usr/bin/python
# -*- coding: utf8 -*-
import xmpp
j_CLIENT=xmpp.Client('gmail.com',debug=[])
j_CLIENT.connect(proxy={'host':'192.168.1.254','port':8080,'user':'guest','password':'cisco'})
#j_CLIENT.connect()
j_CLIENT.auth('shaozx','password')
#j_CLIENT.sendInitPresence(50)
j_CLIENT.send(xmpp.Message('shaozx@gmail.com','test'))
写python的东西感觉架着滑翔机,
对老手来说是一种享受,而新手战战兢兢如履薄冰
最后祝你好运!
因为 google talk 本身就是基于 jabber 协议扩展的,所以也能给 google talk 发消息
早期的 python-xmpp 不支持 SSL 认证登录,所以只能登到一些非SSL认证的服务器,如 Jabber.org ,再给 google talk 的用户发消息,新版本已经解决这个问题。我现在使用的版本里 auth.py 是 v 1.35 2006/01/18 19:26:43
auth的参数是(节点,密码)
j_CLIENT.auth('shaozx','password')
第一次写的时候传入了 user@gmail.com 导致程序报错,后来跟踪调试,找到了第 143行,
它的本意是通过 user@gmail.com 截断得到 gmail.com,然后 DNS 解晰得到实际服务器 talk.l.google.com,
最后组合得到 user@talk.l.google.com,可是程序里几个变量都叫 server ,把自已也搞糊了!
140 if "DIGEST-MD5" in mecs:
141 node=Node('auth',attrs={'xmlns':NS_SASL,'mechanism':'DIGEST-MD5'})
142 elif "PLAIN" in mecs:
143 sasl_data='%s\x00%s\x00%s'%(self.username+'@'+self._owner.Server,self.username,se lf.password)
144 node=Node('auth',attrs={'xmlns':NS_SASL,'mechanism':'PLAIN'},payload=[base64.enco destring(sasl_data)])
145 else:
146 self.startsasl='failure'
147 self.DEBUG('I can only use DIGEST-MD5 and PLAIN mecanisms.','error')
148 return
我现在使用的python-xmpp里带的 transport .py 版本是 transports.py,v 1.28 2006/01/26 13:09:35
我修改屏蔽了第 182 行,否则使用代理服务器的时候总是报错,无法认证成功,还没想明白为什么
172 def send(self,raw_data):
173 """ Writes raw outgoing data. Blocks until done.
174 If supplied data is unicode string, encodes it to utf-8 before send."""
175 if type(raw_data)==type(u''): raw_data = raw_data.encode('utf-8')
176 elif type(raw_data)<>type(''): raw_data = ustr(raw_data).encode('utf-8')
177 try:
178 self._send(raw_data)
179 # Avoid printing messages that are empty keepalive packets.
180 if raw_data.strip():
181 self.DEBUG(raw_data,'sent')
182 #self._owner.Dispatcher.Event('', DATA_SENT, raw_data)
183 except:
184 self.DEBUG("Socket error while sending data",'error')
185 self._owner.disconnected()
如果是直接连接互联网,connect的写法如下:
j_CLIENT.connect()
中间如果有代理服务器,connect的写法如下:
j_CLIENT.connect(proxy={'host':'192.168.1.254','port':8080,'user':'guest','password':'cisco'})
注意 port 变量是整型,用程序代码生成proxy的时候格外要注意,不然会报错
可以参考 python-xmpp 的API文档
如果从命令行或其它地方传入文本,还需要注意编码转换
msg = unicode(msg,'gb18030').encode('utf8')
然后再发送出去
j_CLIENT.send(xmpp.Message('接收者',msg))
sendInitPresence(50)是置发送者状态为“在线”,置发送者状态后接收方会多弹出一个“XXX上线”的消息,我遇到过Palm上的一个jabber客户端,登录成功后就置了一个 0 ,然后死活发不出去消息,晕倒!
自带的程序原型 xsend.py 简化如下:
#!/usr/bin/python
# -*- coding: utf8 -*-
import xmpp
j_CLIENT=xmpp.Client('gmail.com',debug=[])
j_CLIENT.connect(proxy={'host':'192.168.1.254','port':8080,'user':'guest','password':'cisco'})
#j_CLIENT.connect()
j_CLIENT.auth('shaozx','password')
#j_CLIENT.sendInitPresence(50)
j_CLIENT.send(xmpp.Message('shaozx@gmail.com','test'))
写python的东西感觉架着滑翔机,
对老手来说是一种享受,而新手战战兢兢如履薄冰
最后祝你好运!
修正 libgmail 报HTTP Error 400: Bad Request 的 BUG
前段时间写了一个检查邮件的 python 脚本,调用 libgmail
这几天发现不能用了,总是报 HTTP Error 400: Bad Request
上网搜了一下,是因为 gmail 把 URL 改了,(越来越不厚道了)
来源:http://www.thescripts.com/forum/thread696534.html
修改 libgmail v0.1.5.1
第 317 行
try:
link = re.search(RE_PAGE_REDIRECT, pageData).group(1)
redirectURL = urllib.unquote(link)
增加一行,变成:
try:
link = re.search(RE_PAGE_REDIRECT, pageData).group(1)
redirectURL = urllib.unquote(link)
redirectURL = redirectURL.replace('\\x26','&')
---
这几天发现不能用了,总是报 HTTP Error 400: Bad Request
上网搜了一下,是因为 gmail 把 URL 改了,(越来越不厚道了)
来源:http://www.thescripts.com/forum/thread696534.html
修改 libgmail v0.1.5.1
第 317 行
try:
link = re.search(RE_PAGE_REDIRECT, pageData).group(1)
redirectURL = urllib.unquote(link)
增加一行,变成:
try:
link = re.search(RE_PAGE_REDIRECT, pageData).group(1)
redirectURL = urllib.unquote(link)
redirectURL = redirectURL.replace('\\x26','&')
---
2007年8月30日
SSH的常见使用方法
telnet已经是非常古董级的产品,老的telnet都是明文传送数据(包括密码),很容易被网络上的其它节点监听导致泄密,新一点的telnet加了一层SSL传输加密但是支持不是很广泛。
这里介绍一些SSH命令和使用方法,详细的配置和参数说明可以参考相关的手册。
1、登录
2、使用证书登录
3、穿透防火墙
4、文件拷贝
5、目录挂载
1、登录时指定用户名和主机
ssh 与 telnet 有些不同。后者会提示你输入用户名,而前者默认使用当前的登录用户名,但是大部分情况下,远端要使用的用户名都不是本地登录的用户名
可以用如下方法指定用户名
ssh -l user host
或
ssh user@host
然后系统才会提示你输入 user 用户的密码。
如果是第一次登录该主机,在输入密码前还会看到一段提示你是否接受密钥的对话,输入 yes 按受即可
2、用证书登录
用证书登录可以不用每次手工输入密码,只需要输入 ssh user@host 就直接进入服务器,因此可以将服务器端的密码设得很复杂以提高安全性,但是一定要保护好客户端的证书。
使用证书登书方式需要2份证书文件:
一份放在本地的 $HOME/.ssh目录下面,id_rsa,有点象IC卡钥匙
另一份放在任意多的主机上面,好比IC卡锁,id_rsa.pub
证书文件一般放在 $HOME/.ssh 目录下面,如果你还没有这个目录或者这个目录下没有任何文件,就需要生成新的公钥私钥
在客户端执行:
ssh-keygen -t rsa
(一路回车即可)
会在 $HOME/.ssh 下面产生两个文件
-rw------- 1 biff biff 1671 2007-08-30 10:46 id_rsa
rw-r--r-- 1 biff biff 395 2007-08-30 10:46 id_rsa.pub
id_rsa是私钥,安全级别较高,只允许本人查看
而 id_rsa.pub 是准备送到其它服务器上去的,给别人是没关系的。
有了证书以后就需要把公钥放到服务器上去
ssh-copy-id -i id_rsa.pub user@server
这条命令会提示你输入远端user用户的密码,然后将公钥追加到远端用户$HOME/.ssh目录下面的authorized_keys文件里
遇到新的SSH服务器以后,只需要执行这一步就行了,千万不要重新生成密钥,不然前面的那些主机就又不认得新密钥了
然后试试 ssh user@host ,就可以直接进入,不会再提示你输入密码了。
不过有个例外!如果远端服务器的用户名与密码相同,你使用密钥登录就不会成功
3、穿过代理服务器 ( 摘自 Open SSH Client 官方文档 )
ssh本身不能穿透代理服务器,需要配合其它的程序进行转发
在 fedora 中,检查是否已经安装了 nc ( netcat ),在 $HOME/.ssh/config 文件中增加一行
ProxyCommand nc -X connect -x 192.168.2.67:808 %h %p
如果你是使用SOCKS代理,则需要把上面的"connect"换成"4"或者"5",这个"4"或者"5"对应你的SOCKS代理的版本。
在Debian 3.2和Ubuntu 6.06中你可以使用connect-proxy程序来连接HTTP代理。首先得安装这个connect-proxy软件包,然后在 ~/.ssh/config 文件中增加类似这样的一行:
ProxyCommand connect-proxy -H 192.168.2.67:808 %h %p
如果你是使用SOCKS代理,则需要把上面的"-H"换成"-S"。
Mandriva 2006与Debian 3.2的情形类似,只是它的软件包和程序的名字都叫connect,作相应的修改就可以了。
( 我在 Ubuntu gutsy 下面穿透 http-proxy 成功 )
4、文件拷贝
如果服务器有ssh服务,就等于一条带加密的FTP传送带,可以进行文件拷贝了。
scp ./file1 user@server:path/file1
将当前目录下的 file1 文件复制到server主机的user用户下 path目录下
反之亦然,可以将远程文件复制到本地
5、挂载远程目录
如果服务器上开启了ssh服务,就可以将服务器上的目录挂载成本地目录,然后就可以直接用 cp / rm 之类的本地文件操作命令来操作远程文件,也能直接用 vi 等命令对远程文件进行编辑,跟操作本地文件一样方便。参考 http://www.pkblogs.com/binsos/2007/06/linux.html
这里介绍一些SSH命令和使用方法,详细的配置和参数说明可以参考相关的手册。
1、登录
2、使用证书登录
3、穿透防火墙
4、文件拷贝
5、目录挂载
1、登录时指定用户名和主机
ssh
可以用如下方法指定用户名
ssh -l user host
或
ssh user@host
然后系统才会提示你输入 user 用户的密码。
如果是第一次登录该主机,在输入密码前还会看到一段提示你是否接受密钥的对话,输入 yes 按受即可
2、用证书登录
用证书登录可以不用每次手工输入密码,只需要输入 ssh user@host 就直接进入服务器,因此可以将服务器端的密码设得很复杂以提高安全性,但是一定要保护好客户端的证书。
使用证书登书方式需要2份证书文件:
一份放在本地的 $HOME/.ssh目录下面,id_rsa,有点象IC卡钥匙
另一份放在任意多的主机上面,好比IC卡锁,id_rsa.pub
证书文件一般放在 $HOME/.ssh 目录下面,如果你还没有这个目录或者这个目录下没有任何文件,就需要生成新的公钥私钥
在客户端执行:
ssh-keygen -t rsa
(一路回车即可)
会在 $HOME/.ssh 下面产生两个文件
-rw------- 1 biff biff 1671 2007-08-30 10:46 id_rsa
rw-r--r-- 1 biff biff 395 2007-08-30 10:46 id_rsa.pub
id_rsa是私钥,安全级别较高,只允许本人查看
而 id_rsa.pub 是准备送到其它服务器上去的,给别人是没关系的。
有了证书以后就需要把公钥放到服务器上去
ssh-copy-id -i id_rsa.pub user@server
这条命令会提示你输入远端user用户的密码,然后将公钥追加到远端用户$HOME/.ssh目录下面的authorized_keys文件里
遇到新的SSH服务器以后,只需要执行这一步就行了,千万不要重新生成密钥,不然前面的那些主机就又不认得新密钥了
然后试试 ssh user@host ,就可以直接进入,不会再提示你输入密码了。
不过有个例外!如果远端服务器的用户名与密码相同,你使用密钥登录就不会成功
3、穿过代理服务器 ( 摘自 Open SSH Client 官方文档 )
ssh本身不能穿透代理服务器,需要配合其它的程序进行转发
在 fedora 中,检查是否已经安装了 nc ( netcat ),在 $HOME/.ssh/config 文件中增加一行
ProxyCommand nc -X connect -x 192.168.2.67:808 %h %p
如果你是使用SOCKS代理,则需要把上面的"connect"换成"4"或者"5",这个"4"或者"5"对应你的SOCKS代理的版本。
在Debian 3.2和Ubuntu 6.06中你可以使用connect-proxy程序来连接HTTP代理。首先得安装这个connect-proxy软件包,然后在 ~/.ssh/config 文件中增加类似这样的一行:
ProxyCommand connect-proxy -H 192.168.2.67:808 %h %p
如果你是使用SOCKS代理,则需要把上面的"-H"换成"-S"。
Mandriva 2006与Debian 3.2的情形类似,只是它的软件包和程序的名字都叫connect,作相应的修改就可以了。
( 我在 Ubuntu gutsy 下面穿透 http-proxy 成功 )
4、文件拷贝
如果服务器有ssh服务,就等于一条带加密的FTP传送带,可以进行文件拷贝了。
scp ./file1 user@server:path/file1
将当前目录下的 file1 文件复制到server主机的user用户下 path目录下
反之亦然,可以将远程文件复制到本地
5、挂载远程目录
如果服务器上开启了ssh服务,就可以将服务器上的目录挂载成本地目录,然后就可以直接用 cp / rm 之类的本地文件操作命令来操作远程文件,也能直接用 vi 等命令对远程文件进行编辑,跟操作本地文件一样方便。参考 http://www.pkblogs.com/binsos/2007/06/linux.html
2007年8月10日
中国人在复制什么?
一直在用 Gaim,今天试了一下 Gajim ,印象里这个软件是可以语音的,但是不行
然后上 google 搜了一下 "google talk linux 语音"
呵,好家伙,满满的一屏全是一样的标题:“Linux将可以跟Google talk 语音通话了”
这是我很久很久以前在 linuxfans 论坛上发的一则新闻,
有史以来我也就发过这么一次,而且内容还是从英文网站摘来的
抄也就罢了,竟然很少引用了原文出处的!
我算是有点公德心的,每次引用总是小心意意的加上原文出处,即使忘记了也会再去搜一次
又想起前次那个“昨天,财务找我”的段子
最后的感想是:互联网出名其实很容易,但是不一定是你的名字!
----------------------------
唠叨归唠哪,细看了一下 Google 搜索的排名
我在 Ubuntu China 新闻组里发的贴基本上能排上前几位,
而实际情况是:这些有点内涵的贴子都是从我的 blog 上转贴过去的
访问量排第一
----------------------------
记得看过一则新闻, Google 正在修改排名的算法
也就是文章排序的先后顺序是按登出时间的先后进行排列
还有正在研发的原创登记,让作者认领自已的原创进行标记
“中国在复制世界”的神话还能走多远?
然后上 google 搜了一下 "google talk linux 语音"
呵,好家伙,满满的一屏全是一样的标题:“Linux将可以跟Google talk 语音通话了”
这是我很久很久以前在 linuxfans 论坛上发的一则新闻,
有史以来我也就发过这么一次,而且内容还是从英文网站摘来的
抄也就罢了,竟然很少引用了原文出处的!
我算是有点公德心的,每次引用总是小心意意的加上原文出处,即使忘记了也会再去搜一次
又想起前次那个“昨天,财务找我”的段子
最后的感想是:互联网出名其实很容易,但是不一定是你的名字!
----------------------------
唠叨归唠哪,细看了一下 Google 搜索的排名
我在 Ubuntu China 新闻组里发的贴基本上能排上前几位,
而实际情况是:这些有点内涵的贴子都是从我的 blog 上转贴过去的
访问量排第一
----------------------------
记得看过一则新闻, Google 正在修改排名的算法
也就是文章排序的先后顺序是按登出时间的先后进行排列
还有正在研发的原创登记,让作者认领自已的原创进行标记
“中国在复制世界”的神话还能走多远?
2007年8月6日
在脚本里用 date 命令获得昨天或明天的日期
UNIX 下面写脚本经常要用到取日期,比如当前应用系统的日期是 2006/07/25,就需要计算出明天的日期2006/07/26,然后根据计算得到的日期做一些预处理,比如日期切牌这类的操作。
在 UNIX 环境下,我一直都是传一条 SQL 给数据库,比如 informix 下(oracle类似):
nextday=`dbaccess $SCH_DBS <<! 2>dev/null | cut -d' ' -f2
output to pipe 'grep -v ^$'
select first 1 date+1 from time_table;
!`
test $? && exit
echo $nextday
LINUX 就不必这么麻烦了。
今天看到一篇介绍 linux date命令 的文章,这里介绍的方法你绝对没试过:
假设计算机日期是 2007/08/06 ( 格式化的处理自已搞定,就是 %Y%-m-%d之类的,我就不罗嗦了)
昨天:
date --date='yesterday'
2007年 08月 05日 星期日 19:02:25 CST
前天:
date --date='1 days ago'
2007年 08月 04日 星期六 19:06:34 CST
半小时后: -30 minutes ;上一小时: 1 hour ago;上个月: 1 month ago ;去年:1 year ago
明天:
date --date='next day'
2007年 08月 07日 星期二 19:10:12 CST
date --date='-1 days ago'
2007年 08月 07日 星期二 19:08:51 CST
半小时后: 30 minutes ;下一小时: 1 hour;下个月: 1 month ;明年:1 year 一个月零五天: 1 month 5 day
有意思吧!想想还需要什么功能?
下周:
date --date='1 week'
周未:
date --date='this sunday'
变态组合一下:
date --date='-30 minutes -2 weeks +2 months'
?? 怎么解释?? (把飞机票送过来,时间是)在两个月提前2周半小时 ...... 够变态的!!
这还不够,还需要传入自已给定的时间作参数,计算指定日期时间之前或之后的时间:
在 UNIX 环境下,我一直都是传一条 SQL 给数据库,比如 informix 下(oracle类似):
nextday=`dbaccess $SCH_DBS <<! 2>dev/null | cut -d' ' -f2
output to pipe 'grep -v ^$'
select first 1 date+1 from time_table;
!`
test $? && exit
echo $nextday
LINUX 就不必这么麻烦了。
今天看到一篇介绍 linux date命令 的文章,这里介绍的方法你绝对没试过:
假设计算机日期是 2007/08/06 ( 格式化的处理自已搞定,就是 %Y%-m-%d之类的,我就不罗嗦了)
昨天:
date --date='yesterday'
2007年 08月 05日 星期日 19:02:25 CST
前天:
date --date='1 days ago'
2007年 08月 04日 星期六 19:06:34 CST
半小时后: -30 minutes ;上一小时: 1 hour ago;上个月: 1 month ago ;去年:1 year ago
明天:
date --date='next day'
2007年 08月 07日 星期二 19:10:12 CST
date --date='-1 days ago'
2007年 08月 07日 星期二 19:08:51 CST
半小时后: 30 minutes ;下一小时: 1 hour;下个月: 1 month ;明年:1 year 一个月零五天: 1 month 5 day
有意思吧!想想还需要什么功能?
下周:
date --date='1 week'
周未:
date --date='this sunday'
变态组合一下:
date --date='-30 minutes -2 weeks +2 months'
?? 怎么解释?? (把飞机票送过来,时间是)在两个月提前2周半小时 ...... 够变态的!!
这还不够,还需要传入自已给定的时间作参数,计算指定日期时间之前或之后的时间:
我儿子十岁生日:(中国人的习惯是十周岁提前做,嘻嘻)
date --date='2008-08-08 08:08:08 UTC+8 +8 year -8 months' +'%F %T'
2015-12-08 08:08:08
呵呵,这句话的解释是 ^_^ ??
你自已折腾去吧。。。。。
二进制生存 http://www.pkblogs.com/binsos
2007年8月5日
理性看待LINUX桌面应用的现状
-----------------------------
引自 SUSE中文组
http://groups.google.com/group/SuSE_Chinese/browse_frm/thread/213b86da2f1425e4
>很多"全日制"Linux使用者都是网络管理员或程序开发员, 特别是对开发UNIX程序的程序员来说,Linux绝对是利器。
最后一句话是对的 其它都是在胡说
楼主 windows够易用了 linux有些地方不得不打命令 windows不得不打命令的地方很少 因为图形界面出来的早 完善的多了 家用的时
候完全不用打 这让刚接触电脑不久的人没恐惧了
你说的这种情况见证了windows的脆弱性 因为windows的文件结构很不清晰 也不划分开来 内核 驱动 管理工具 命令行全挤一起 你装个什
么软件它就变慢了 你用一段它就快挂了
你是转载的还是杜撰的啊?如果都不是 那你真强 我对你的敬仰之情犹如滔滔江水连绵不绝 也不至于玩到这地步吧
------------------------------
我从98年开始接触LINUX,但一直仅限于接触,只是装装看看,了解一下LINUX的发展状况。
参加工作以后,大概是2001年,工作比较闲的时候就开始用Linux架一些http\ftp\dns之类的服务,感觉linux在服务器方面大有作为,但是身边一直没有成功的案例。当然,这也代表着国内LINUX应用的当时的现状--说的多、用的少。
直到2004年才见到第一个案例,是我的一个同事用redhat as4架了一个日报社的web站点(http://www.cb315.com),用的jsp/tomcat。
2005年的时候遇到了suse 10.0,感觉眼前一亮,这才是第一个让我感觉能够真真使用的桌面版LINUX,在5月份的时候,装了win/linux双系统,基本上停在linux下面不进windows了。
当时我是在杭州做一个银行BI项目的开发,工作相对简单--UNIX C编程,只需要telnet就行了,gnome-terminal多标签当然是这方面的利器。
2006年的时候又接触了sshfs和ftpfs,能够将HP-UNIX的远程目录挂载成Linux的本地目录,这样就能够用VIM编辑C程序,不用再受罪忍受标准UNIX-VI了,而且经过一年的使用和学习,自已也写了一些shell脚本用于日常使用,这更增加了对linux的依赖。
这时候已经从“windows是不可或缺的后盾”转变成“进了windows就不适应”。
2006年应该是转折性的一年,从这时候开始,基本上都是在虚拟机里面使用windows,用虚拟机主要还是office和erwin解决不了。
我是绝对的Linux支持者,但还不至于让狂热冲昏头脑,
目前linux服务器应该已经走向实用阶段,虽然标准化和易用性方面已经无人可及,但是在高端应用特性和硬件驱动支持上还是比不上专用的UNIX系统
但是桌面,还仅仅是一个启步。虽然有一些电脑厂商开始预装LINUX,但是这些经过精心处理得"很象windows"的linux仍然是只是能用,并不够用和好用。
WINDOWS仍然占领着主流操作系统市,非IT技术人员对其知之甚少,大部分用计算机的人其实并不知道LINUX的存在。
MS OFFICE套件仍然占领着主流市场,Linux下的相关软件只能兼容,但是无法改变用户的使用习惯和第一体验。就比如很多接触永中office的人都称赞它做得棒,就是因为它做得跟ms office一个样,符合用户的习惯,其实它的功能和应用的广泛性不一定比得上open office
IE,这是一个不能不说的痛,特别是在国内,网银ActiveX的应用,就不多说了。另外,Firfox2.0在速度上超过了ie6,但是感觉还是不及ie7,但这中间可能有IE是集成在系统内核中的原因,但是ff的插件绝对是一流的
IM上面,QQ经常连不上,MSN和GT的语音功能还不完善,路还很长。
引自 SUSE中文组
http://groups.google.com/group/SuSE_Chinese/browse_frm/thread/213b86da2f1425e4
>很多"全日制"Linux使用者都是网络管理员或程序开发员, 特别是对开发UNIX程序的程序员来说,Linux绝对是利器。
最后一句话是对的 其它都是在胡说
楼主 windows够易用了 linux有些地方不得不打命令 windows不得不打命令的地方很少 因为图形界面出来的早 完善的多了 家用的时
候完全不用打 这让刚接触电脑不久的人没恐惧了
你说的这种情况见证了windows的脆弱性 因为windows的文件结构很不清晰 也不划分开来 内核 驱动 管理工具 命令行全挤一起 你装个什
么软件它就变慢了 你用一段它就快挂了
你是转载的还是杜撰的啊?如果都不是 那你真强 我对你的敬仰之情犹如滔滔江水连绵不绝 也不至于玩到这地步吧
------------------------------
我从98年开始接触LINUX,但一直仅限于接触,只是装装看看,了解一下LINUX的发展状况。
参加工作以后,大概是2001年,工作比较闲的时候就开始用Linux架一些http\ftp\dns之类的服务,感觉linux在服务器方面大有作为,但是身边一直没有成功的案例。当然,这也代表着国内LINUX应用的当时的现状--说的多、用的少。
直到2004年才见到第一个案例,是我的一个同事用redhat as4架了一个日报社的web站点(http://www.cb315.com),用的jsp/tomcat。
2005年的时候遇到了suse 10.0,感觉眼前一亮,这才是第一个让我感觉能够真真使用的桌面版LINUX,在5月份的时候,装了win/linux双系统,基本上停在linux下面不进windows了。
当时我是在杭州做一个银行BI项目的开发,工作相对简单--UNIX C编程,只需要telnet就行了,gnome-terminal多标签当然是这方面的利器。
2006年的时候又接触了sshfs和ftpfs,能够将HP-UNIX的远程目录挂载成Linux的本地目录,这样就能够用VIM编辑C程序,不用再受罪忍受标准UNIX-VI了,而且经过一年的使用和学习,自已也写了一些shell脚本用于日常使用,这更增加了对linux的依赖。
这时候已经从“windows是不可或缺的后盾”转变成“进了windows就不适应”。
2006年应该是转折性的一年,从这时候开始,基本上都是在虚拟机里面使用windows,用虚拟机主要还是office和erwin解决不了。
我是绝对的Linux支持者,但还不至于让狂热冲昏头脑,
目前linux服务器应该已经走向实用阶段,虽然标准化和易用性方面已经无人可及,但是在高端应用特性和硬件驱动支持上还是比不上专用的UNIX系统
但是桌面,还仅仅是一个启步。虽然有一些电脑厂商开始预装LINUX,但是这些经过精心处理得"很象windows"的linux仍然是只是能用,并不够用和好用。
WINDOWS仍然占领着主流操作系统市,非IT技术人员对其知之甚少,大部分用计算机的人其实并不知道LINUX的存在。
MS OFFICE套件仍然占领着主流市场,Linux下的相关软件只能兼容,但是无法改变用户的使用习惯和第一体验。就比如很多接触永中office的人都称赞它做得棒,就是因为它做得跟ms office一个样,符合用户的习惯,其实它的功能和应用的广泛性不一定比得上open office
IE,这是一个不能不说的痛,特别是在国内,网银ActiveX的应用,就不多说了。另外,Firfox2.0在速度上超过了ie6,但是感觉还是不及ie7,但这中间可能有IE是集成在系统内核中的原因,但是ff的插件绝对是一流的
IM上面,QQ经常连不上,MSN和GT的语音功能还不完善,路还很长。
订阅:
博文 (Atom)

