Recently in Soft Category

Win7 IPV6 127.0.0.1异常的问题

| No Comments
9月份使用3年多的T60 Win7 旗舰版突然出现异常,无法使用GoAgent,检查后发现是127.0.0.1环回IP地址不可达。
当时折腾了2个晚上,最终以失败而告终,无奈之下重装了系统,暂时服务正常了。

上周发现QT突然又无法使用,死活登录不上,特意跑到EliteTrader论坛看了最近没啥异常,除了BigChart无法再使用。
还好上周5把X220带回家了,上面也安装了QT,结果一测试居然发现正常使用,那应该就不是QT系统的问题,而是T60的系统出现了异常。

尝试重装,尝试把X220上的软件整体打包过来均无法正常使用,无奈之下准备抓包看看情况。访问wireshark的时候才发现无法直接访问,准备启用GoAgent。一试不打紧,原来GoAgent又完蛋了,自然的想到了ping 127.0.0.1,居然又和9月份的情况一样了。

看看近期的软件安装记录和系统更新记录,先把Windows Defender彻底停止服务,再将公司VPN软件卸载,再卸载了CICSO的一款软件,测试后仍然异常。
再ipconfig查看,突然发现了IPv6的网卡:Teredo Tunneling Pseudo-interfac

在9月份的时候,用尽多个办法禁用Win7系统的IPv6均告失败,本次看到分外眼红,google一把,发现了几个有价值的信息:
http://blogs.msdn.com/b/richin/archive/2010/11/26/how-to-disable-teredo-tunneling-pseudo-interface-6to4-adapter.aspx

How to Disable Teredo Tunneling Pseudo-interface 6to4 Adapter

so sometimes this IPv4 to IPv6 shim can become a problem and in some cases it does not appear in the list of adapters where you can quickly disable it. Fortunately there is a way to quickly disable the Teredo Tunneling interface using the command line. Open an elevated command window and type the following command:
netsh interface teredo set state disabled

再测试依旧异常,尝试重启电脑,久违的ping 127.0.0.1正常了,开启QT,终于又可以使用了。

PS:查看设备的地方可以查看隐藏设备的。

比较有意思的一个问题是QT的正常使用难道必须依赖127.0.0.1正常么?奇怪的东西。


--EOF--

"VPN"神器:SoftEther

| No Comments

5年前就有同事介绍了这款软件,下载后一直没试过。最近几天,感觉有需要折腾一下,找了网上的一些文章,看了一下后折腾成功。
从家里能直接远程访问公司的PC了,爽歪歪!

参考信息:
http://en.wikipedia.org/wiki/SoftEther_Corporation


ttp://jssz.bokee.com/5771392.html
ttp://buyiban.blog.51cto.com/605706/132737
ttp://buyiban.blog.51cto.com/605706/132755



要点:
1)安装虚拟网卡HUB
2)安装虚拟网卡,指定内网IP,我使用的是192.168.10.x网段,这样和家里的路由器的192.168.1.x 10.0.0.x不冲突。
3)端口映射:443->7777,这样公司可以访问,注意开放win7的防火墙策略7777端口。
4)用户名和密码设定:softether:xxxx

--EOF--

sudo apt-get 和dpkg命令大全

| No Comments
zz from 
http://mintelong.iteye.com/blog/480132
http://lnote.blogbus.com/logs/106238865.html
 

dpkg命令解析 

dpkg是Debian的中级软件包管理器,类似RPM. 
dpkg是Debian软件包管理系统的中流砥柱,负责安全卸载软件包,配置,以及维护已安装的软件包.也是Debian系统中众多软件包管理工具的后端.有关dpkg的更多介绍参阅:http://www.dpkg.org 
系统中所有packages的信息都在/var/lib/dpkg/目录下,其中子目录"/var/lib/dpkg/info"用于保存各个软件包的配置文件列表. 
.conffiles 记录了软件包的配置文件列表 
.list 保存软件包中的文件列表,用户可以从.list的信息中找到软件包中文件的具体安装位置. 
.md5sums 记录了软件包的md5信息,这个信息是用来进行包验证的. 
.prerm 脚本在Debian报解包之前运行,主要作用是停止作用于即将升级的软件包的服务,直到软件包安装或升级完成. 
.postinst脚本是完成Debian包解开之后的配置工作,通常用于执行所安装软件包相关命令和服务重新启动. 
/var/lib/dpkg/available文件的内容是软件包的描述信息,该软件包括当前系统所使用的Debian安装源中的所有软件包,其中包括当前系统中已安装的和未安装的软件包. 
dpkg 
查询以安装的信息 
查询当前系统所有已安装的deb包 
dpkg -l 命令用于查询当前系统所有以安装的deb包的信息.,通过less和grep可以执行更复杂的查询工作. 
例如查找跟vim有关的软件包,dpkg -l |grep -ivim 
(如发现iU 表示软件包未安装成功,ii表示安装成功) 
查看已安装软件包的详细情况 
dpkg -s 命令查看软件包的详细情况,包括版本,依赖之类的 
查询系统中所安装软件包所安装的文件 
dpkg -L 命令用于查询系统中所安装软件包的安装的文件安装到系统的位置和安装了那些. 
小提示: 如何可以看软件包装到哪个地方? 
用apt-get install * 
如何可以看软件包装到哪个地方? 
dpkg -L package-name|more 

查询系统中某个文件属于那个软件包 
dpkg -S 命令用于了解当前的软件属于那个软件包 
查询未安装的信息 
查询未安装软件包详细信息 
dpkg -I 命令用于查看未安装软件包的详细信息,以便了解该软件包是否需要安装. 
查询deb包文件中所包含的文件 
dpkg -c 显示未安装deb软件包所包含的文件列表,以及安装位置 
安装软件包 
安装deb软件包 
dpkg -i 手工安装deb包到系统中,不过有时会存在Dpends关系,建议使用apt-get 来安装. 
如果通过dpkg -i安装软件后由于Dpends关系没有安装成功,可通 过apt-get -f install解决 
解决dpkg -i 安装deb包出现Dpends问题 
Java代码  
apt-get -f install 解决Dpends问题.  

例如:dpkg -i lftp_3.1.3-1_i386.deb 
Selecting previously deselected package lftp. 
(Reading database ... 20654 files and directories currently installed.) 
unpacking lftp (from lftp_3.1.3-1_i386.deb)... 
dpkg:dependency problems prevent configuration of lftp: 
ftp depends on libexpat1 (<=1.95.8);however 
dpkg : error processing lftp (--install) 
dependency problems -leaving unconfigured 
Errors were encountered while processing: 
lftp 
//lftp软件包安装失败 
dpkg -l |grep lftp 
iU lftp 3.1.3-1 Sophisticated 
command-line FTP/HTTP client p 
//"dpkg -l" 查询信息表示lftp软件包未安装成功 
(iU表示未安装成功,ii表示安装成功) 
使用apt-get -f install解决 
卸载deb软件包 
卸载deb包 
dpkg -r用于卸载指定的软件包,该命令只卸载软件包安装到系统中的文件,而不去删除软件包的配置文件,因此不是完全意义上的卸载.但是软件包保存在系统中,可以提供给以后在安装软件包时使用. 
例如:dpkg -r prozilla 移除后再用dpkg -l |grep prozilla 查看 
会看到rc proc 1.3.6-3woody3 multi-thraded download accelerator 
表示软件包已经被卸载,但配置文件仍在"rc"带表配置文件仍在. 
卸载软件包并清除配置文件 
dpkg -P 用于卸载软件包同时也删除配置文件,dpkg -P 不能解决Dpends问题,建议卸载时使用apt-get操作 
重新配置软件包 
对于Debian系统中的众多软件包(尤其是系统和服务器软件包)来说,在第一次安装该软件包时候会显示对话框窗口,提示用户输入必要的配置信息.当用户需要再次对软件包配置的时候,可以使用dpkg-reconfigure来对指定的软件包进行配置. 
比如dpkg-reconfigure locales 
用于配置语言 
alien包转换工具 
如果我们有很喜欢的RPM包,而又没有deb版本 
怎么办~? 
可以同过alien来转换或者直接安装,这个小家伙可是个很方便的东西! 
基本命令如下: 
首先通过apt-get install alien来安装. 
然后alien -i name-of-the-pakage.rpm /*用来直接安装rpm包 
alien -d , --to-deb /*Make debian packages,This is the default 
例:alien -d package.rpm 
alien -r , --to-rpm /*Make rpm packages 
例:alien -r package.deb 
alien -p , --to-pkg /*Make Solaris pkg packages 
alien --to-slp /*Make slp packages 
alien -t , --to-tgz /*Make tgz packages 
alien -T 检测 
alien --patch=patch 设置patch 

Java代码  
sudo dpkg --configure -a  


一、APT的使用(Ubuntu Linux软件包管理工具一) 
apt-cache search # ------(package 搜索包) 
apt-cache show #------(package 获取包的相关信息,如说明、大小、版本等) 
sudo apt-get install # ------(package 安装包) 
sudo apt-get install # -----(package - - reinstall 重新安装包) 
sudo apt-get -f install # -----(强制安装?#"-f = --fix-missing"当是修复安 
装吧...) 
sudo apt-get remove #-----(package 删除包) 
sudo apt-get remove - - purge # ------(package 删除包,包括删除配置文件 
等) 
sudo apt-get autoremove --purge # ----(package 删除包及其依赖的软件包+配置文件等(只对6.10有效,强烈推荐)) 
sudo apt-get update #------更新源 
sudo apt-get upgrade #------更新已安装的包 
sudo apt-get dist-upgrade # ---------升级系统 
sudo apt-get dselect-upgrade #------使用 dselect 升级 
apt-cache depends #-------(package 了解使用依赖) 
apt-cache rdepends # ------(package 了解某个具体的依赖?#当是查看该包被哪些包依赖吧...) 
sudo apt-get build-dep # ------(package 安装相关的编译环境) 
apt-get source #------(package 下载该包的源代码) 
sudo apt-get clean && sudo apt-get autoclean # --------清理下载文件的存 
档 && 只清理过时的包 
sudo apt-get check #-------检查是否有损坏的依赖 
apt-get install 的用法 
apt-get install <package> 
下载 <package> 以及所有倚赖的包裹,同时进行包裹的安装或升级.如果某个包裹被设置了 hold (停止标志,就会被搁在一边(即不会被升级).更多 hold 细节请看下面. 
apt-get remove [--purge] <package> 
移除 <package> 以及任何倚赖这个包裹的其它包裹.--purge 指明这个包裹应该被完全清除 (purged) ,更多信息请看 dpkg -P . 
apt-get update 
升级来自 Debian 镜像的包裹列表,如果你想安装当天的任何软件,至少每天运行一次,而且每次修改了 
/etc/apt/sources.list 后,必须执行. 
apt-get upgrade [-u] 
升级所以已经安装的包裹为最新可用版本.不会安装新的或移除老的包裹.如果一个包改变了倚赖关系而需要安装一个新的包裹,那么它将不会被升级,而是标志为 hold .apt-get update 不会升级被标志为 hold 的包裹 (这个也就是 hold 的意思).请看下文如何手动设置包裹为 hold .我建议同时使用 '-u' 选项,因为这样你就能看到哪些包裹将会被升级. 
apt-get dist-upgrade [-u] 
和 apt-get upgrade 类似,除了 dist-upgrade 会安装和移除包裹来满足倚赖关系.因此具有一定的危险性. 
apt-cache search <pattern> 
搜索满足 <pattern> 的包裹和描述. 
apt-cache show <package> 
显示 <package> 的完整的描述. 
apt-cache showpkg <package> 
显示 <package> 许多细节,以及和其它包裹的关系. 
dselect, console-apt, aptitude, gnome-apt,是APT 的几个图形前端(其中一些在使用前得先安装).这里 dselect 无疑是最强大的,也是最古老,最难驾驭. 
------------------------------------- 
二、 DPKG的 用法(Ubuntu Linux软件包管理工具二) 
dpkg -i <package.deb> 
安装一个 Debian 包裹文件;如你手动下载的文件. 
dpkg -c <package.deb> 
列出 <package.deb> 的内容. 
dpkg -I <package.deb> 
从 <package.deb> 中提取包裹信息. 
dpkg -r <package> 
移除一个已安装的包裹. 
dpkg -P <package> 
完全清除一个已安装的包裹.和 remove 不同的是, remove 只是删掉数据和可执行 
文件, purge 另外还删除所有的配制文件. 
dpkg -L <package> 
列出 <package> 安装的所有文件清单.同时请看 dpkg -c 来检查一个 .deb 文件 
的内容. 
dpkg -s <package> 
显示已安装包裹的信息.同时请看 apt-cache 显示 Debian 存档中的包裹信息,以 
及 dpkg -I 来显示从一个 
.deb 文件中提取的包裹信息. 
dpkg-reconfigure <package> 
重新配制一个已经安装的包裹,如果它使用的是 debconf (debconf 为包裹安装提 
供了一个统一的配制界面).你能够重新配制 debconf 它本身,如你想改变它的前端 
或提问的优先权.例如,重新配制 debconf ,使用一个 dialog 前端,简单运行: 
dpkg-reconfigure --frontend=dialog debconf (如果你安装时选错了,这里可以 
改回来哟 
echo "<package> hold" | dpkg --set-selections 
设置 <package> 的状态为 hlod (命令行方式) 
dpkg --get-selections "<package>" 
取的 <package> 的当前状态 (命令行方式) 
支持通配符,如: 
Debian:~# dpkg --get-selections *wine* 
备注: 
-------------------------------------例如: 
大家现在用的都是 gaim-0.58 + QQ-plugin,为了防止 gaim 被升级,我们可以采用 
如下方法: 
方法一: 
Debian:~# echo "gaim hold" | dpkg --set-selections 
然后用下面命令检查一下: 
Debian:~# dpkg --get-selections "gaim" 
gaim hold 
现在的状态标志是 hold,就不能被升级了. 
如果想恢复怎么办呢? 
Debian:~# echo "gaim install" | dpkg --set-selections 
Debian:~# dpkg --get-selections "gaim" 
gaim install 
这时状态标志又被重置为 install,可以继续升级了. 
同志们会问,哪个这些状态标志都写在哪个文件中呢? 
在 /var/lib/dpkg/status 里,你也可以通过修改这个文件实现 hold. 
有时你会发现有的软件状态标志是 purge,不要奇怪. 
如:事先已经安装了 amsn, 然后把它卸了. 
apt-get remove --purge amsn 
那么状态标志就从 install 变成 purge. 
方法二: 
在/etc/apt 下手动建一个 preferences 文件 
内容: 
Package: gaim 
Pin: version 0.58* 
保存 
更详细内容请看: 
http://linuxsir.com/bbs/showthread....&threadid=22601 
dpkg -S <file> 
在包裹数据库中查找 <file>,并告诉你哪个包裹包含了这个文件.(注:查找的是事 
先已经安装的包裹) 
从源码建立deb packages 
apt-get source [-b] <package> 
下载一个源码的包并解开。 
你必须在你的/etc/apt/sources.list文件里写入一条 deb-src 的记录才能完成这 
项工作。 
如果你输入了一个-b参数,并且是以root的身份,deb包会被自动的创建。 
apt-get build-dep <package> 
自动下载并安装通过源码创建 <package> 时需要的包。 
只有apt 0.5以上版本才支持这个功能。 
现在woody和以上版本包含了这个功能。 
如果你使有一个旧版本的apt,查找依赖性最简单的方法是查看源码包中 
debian/control 这个文件, 
注意这个路径是相对的,是包内的路径。 
普通的用法,结合 apt-get source -b,例子 (as root): 
apt-get build-dep <package> 
apt-get source -b <package> 
会下载源码包,建立依赖性,然后尝试编译源码。 
dpkg-source -x <package.dsc> 
如果你手工下载了一个程序的源码包,其中包含了几个类 
似 .orig.tar.gz , .dsc , 
以及 .diff.gz 之类的文件, 
那么你就可以对 .dsc 文件使用这个命令来 unpack 源码包。 
dpkg-buildpackage 
从 Debian 源码树建立一个deb包。你必须在source tree的主目录才能生效。例 
如: 
dpkg-buildpackage -rfakeroot -uc -b 
这里 '-rfakeroot' 指定命令使用 fakeroot 程序来模仿 root 权限 (来实现所有 
者(ownership)目的), 
'-uc' 表示 "Don't cryptographically sign the changelog", '-b' 代表只建立 
二进制包. 
debuild 
一个快速打包脚本类似 dpkg-buildpackage ,能自动的识别是否使用 fakeroot, 
同时为你运行 lintian 和 gpg 
修正倚赖关系 
dpkg --configure --pending 
如果dpkg在apt-get install upgrade dist-uptradeing 的时候出错退出, 
尝试使用此命令来配置已经unpack的包。 
然后再用 apt-get install ,upgrade, or dist-upgrade -f , 
然后再用 apt-get install, upgrade, or dist-upgrade. 
可能会重复多次,这样通常可以解决大多数的依赖性问题。 
(同时,如果提示由于某种原因需要某个特定的包裹,你可以常识安装或卸载这个包) 
apt-get install -f 
apt-get upgrade -f 
apt-get dist-upgrade -f 
尝试修正上述过程中出现依赖性关系 
注意 apt-get install -f 不需要 <package> 作为参数。 
------------------------------------- 
用apt-cdrom -d /media/cdrom0 add 加载光驱, 
/dev/hdc /cdrom iso9660 user,noauto 0 0 
用编辑器修改一下存盘,重启,应该可以了。 
然后,apt-cdrom -d /cdrom add 
apt-get install (你要装的软件名:《例如gcc》) 
gcc相关的软件会自动装入。 
昨天,刚试过,很爽。 
注意:apt不会认你手动挂载的光驱,如果fstab中设置不对apt不会正常工作。 
用apt-cdrom -d /media/cdrom0 add 加载光驱, 
需要使用#mkdir /media/cdrom0 否则会错误提示说"无法读取文件系统挂载 
点/media/cdrom的状态 -stat(2 没有那个文件或目录)" 

--EOF--

Raspberry Pi 的环境梳理

| No Comments
1.tsinghua.edu.cn的apt package不完整(安装VIM失败),而且从速度来看,也没优势,用回了原来的库:

$ cat sources.list
deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi

2.系统中自带的VIM功能严重不足?从工作开发机拿来的配置基本没法用,所以重新更新安装了VIM
sudo apt-get install vim

3.下载上传不方便,安装了lrzsz
sudo apt-get install lrzsz

4.没有telnet开户端,测试网络端口不方便,需要安装:
sudo apt-get install telnet

5.安装go:
http://dave.cheney.net/2012/09/25/installing-go-on-the-raspberry-pi

Installing the prerequisites
Raspbian comes with almost all the tools you need to compile Go already installed, but to be sure you should install the following packages, described on the golang.org website.

% sudo apt-get install -y mercurial gcc libc6-dev
Cloning the source

% hg clone -u default https://code.google.com/p/go $HOME/go
warning: code.google.com certificate with fingerprint 9f:af:b9:ce:b5:10:97:c0:5d:16:90:11:63:78:fa:2f:37:f4:96:79 not verified (check hostfingerprints or web.cacerts config setting)
destination directory: go
requesting all changes
adding changesets
adding manifests
adding file changes
added 14430 changesets with 52478 changes to 7406 files (+5 heads)
updating to branch default
3520 files updated, 0 files merged, 0 files removed, 0 files unresolved

Building Go
% cd $HOME/go/src
% ./all.bash
If all goes well, after about 90 minutes you should see

ALL TESTS PASSED

---
Installed Go for linux/arm in /home/dfc/go
Installed commands in /home/dfc/go/bin
If there was an error relating to out of memory, or you couldn't configure an appropriate swap device, you can skip the test suite by executing

% cd $HOME/go
% ./make.bash
as an alternative to ./all.bash.

Adding the go command to your path
The go command should be added to your $PATH

% export PATH=$PATH:$HOME/go/bin
% go version
go version devel +cfbcf8176d26 Tue Sep 25 17:06:39 2012 +1000
Now, Go and make something awesome.


但直接更新出问题,该死的墙!需要走代理才行。
strace 进去发现网络死掉,接下载源代码,编译安装失败,看来必须翻了。

6.安装代理软件,最终我使用的是tsocks
sudo apt-get install tsocks
编辑/etc/tsosks.conf即可。
另外的privoxy安装了但没使用。

参考:
http://blog.creke.net/770.html
http://blog.ihipop.info/2011/01/1988.html
在终端下间接使用Socks5代理的几种方法(privoxy,tsocks,proxychains)

http://www.privoxy.org/
http://tsocks.sourceforge.net/faq.php

http://renyongjie668.blog.163.com/blog/static/16005312011824112410588/
http://www.51testing.com/?uid-225738-action-viewspace-itemid-246084

使用tsocks:
tsocks [application [applications arguments]]
tsocks [on|off]

举几个实例吧:
tsocks firefox  #之后再firefox上浏览网页就会默认使用tsocks配置的代理
tsocks git clone git://github.com/avikivity/kvm.git #使用proxy来git,这就是我用的原因

source tsocks on #设置当前shell的tsocks,该命令可能遇到一个小bug在下面有讲到
tsocks show    #查看当前Shell的tsocks设置,tsocks: This shell is socksified.
do_something   #这里就能默认使用tsocks的代理去do something了,前面已经设置了
source tsocks off #关闭当前shell的tsocks代理设置
tsocks show    #再次查看,tsocks: This shell is NOT socksified.
遇到的问题及解决方案:

13:01:17 libtsocks(2432): SOCKS server proxy-shz.intel.com (10.239.120.36) is not on a local subnet!
设置的代理没有与/etc/tsocks.conf文件中的local设置的网络在同一个子网中。
13:03:26 libtsocks(2451): The SOCKS server (proxy.ABCD.com) listed in the configuration file which needs to be used for this connection is invalid
配置文件的问题,我也忘了是啥时出现的错误了,但我碰到过的。
13:02:50 libtsocks(2441): Error 110 attempting to connect to SOCKS server (Connection timed out)
这个很明显了,就是你设置的proxy连接不上(可能是本来就连不上,或者没在同一个局域网内),请检查和确认配置。

ERROR: ld.so: object '/lib64/libtsocks.so' from LD_PRELOAD cannot be preloaded: ignored.
郁闷坏了,是因为有一次我在rhel5u5上安装了一个rhel6的tsock rpm包,解决办法是到http://pkgs.org/找到一个tsocks for rhel5的rpm包,安装即可。

[root@kvm-build ~]# source /usr/bin/tsocks on
basename: invalid option -- 'b'
Try `basename --help' for more information.
看到这样的错误,有可能是你的tsocks有点小bug,不过不影响使用的,接着你用tsocks show来看,一样可以看到提示说socks设置成功的,tsocks: This shell is socksified.

我的rhel5和rhel6中的tsocks都遇到这样的错误信息,你可以简单地修改一下/usr/bin/tsocks文件,将其中的basename的一行修改一下即可:

修改前:PRG="$(basename $0)"
修改为:PRG="$(basename -- $0)"

这是由于这个tsocks写后,coreutils工具做了些改动,其中basename工具需要用"--"来表示options的结束(为了保持新老版本的兼容)。这个问题在Bug-coreutils mailing list中讨论过了的,见:http://www.mail-archive.com/bug-coreutils@gnu.org/msg09912.html

替代工具机参考文档:
一个与tsocks有类似功能的工具: socat   (我暂时没怎么用)
见:http://freshmeat.net/projects/socat/
tsocks.conf配置文件:http://linux.die.net/man/5/tsocks.conf
tsocks的使用:http://www.21andy.com/blog/20100212/1678.html 
另外的人遇到的tsocks问题:http://notes.benv.junerules.com/socks-opera-and-brute-force/




--EOF--

PS1 ANSI 的重新梳理

| No Comments
之前已经发现有PS1的异常问题:http://www.guduo.net/2012/02/000392.html
PS1="\n\e[1;37m[\e[m\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m \e[4m\`pwd\`\e[m\e[1;37m]\e[m\n\\$ "
参考:http://www.dbanotes.net/techmemo/unix_rm_-f.html 我有留言

这个PS1的设置在fastdomain的机器上允许没问题,但在当时的CentOS上实际是有异常的,今天在Raspberry Pi上也有光标的问题,重新修改了一下,目前正常了:
PS1="\n\[\e[1;37m\][\[\e[m\e[1;32m\]\u\[\e[m\e[1;33m\]@\[\e[m\e[1;35m\]\h\[\e[m \e[4m\]\`pwd\`\[\e[m\e[1;37m]\e[m\e[1;36m\]\n\[\e[m\]\\$ "
export PS1

参考信息:http://www.4ucode.com/Study/Topic/1611190
PS1="\u@\h:\w\$ " 
    但是这样设置之后显示的提示符是没有颜色的,如果希望加入颜色设置,可以这样:

PS1="\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m:\w\$ " 
    此时,在终端中的显示应该是彩色的提示符了,其中的\e[1;xxm和\e[m就是改变终端字体颜色的部分,前者是修改颜色,后者是恢复到正常显示。但是 这时还会有问题,在提示符中输入第一行时,回车换行不正常,导致显示很混乱,因此,除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间 ,这样就使自动换行能够继续正常工作。最终版本如下(可解决带颜色提示符的不换行问题):

PS1="\[ \e[1;32m\] \u\[ \e[m\] \[ \e[1;33m\] @\[ \e[m\]\[ \e[1;35m\] \h\[ \e[m\] :\w\$ "



另外一些信息小结:
\e 和 \033类似
\e[m 和\e0m 类似


http://51nosql.com/?p=134
Linux终端输出颜色控制

文本终端的颜色可以使用"ANSI非常规字符序列"来生成:
cho -e "\033[背景;前景;光标mME \033[0m"
例:  echo -e "\033[44;37;5m ME \033[0m COOL"
上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符"ME",然后重新设置屏幕到缺省设置,输出字符 "COOL"。"e"是命令 echo 的一个可选项,它用于激活特殊字符的解析器。"\033"引导非常规字符序列。"m"意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 "44;37;5" 和"0"。修改"44;37;5"可以生成不同颜色的组合,数值和编码的前后顺序没有关系。


可以选择的编码如下所示:
前景 背景 颜色
---------------------------------------
30 40 黑色
31 41 红色
32 42 绿色
33 43 黄色
34 44 蓝色
35 45 紫红色
36 46 青蓝色
37 47 白色

代码 意义
-------------------------
0 OFF
1 高亮显示
4 下划线
5 闪烁
7 反白显示
8 不可见

其他有趣的代码还有:
\033[2J  清除屏幕
\033[0q  关闭所有的键盘指示灯
\033[1q  设置"滚动锁定"指示灯 (Scroll Lock)
\033[2q  设置"数值锁定"指示灯 (Num Lock)
\033[3q  设置"大写锁定"指示灯 (Caps Lock)
\033[15:40H 把光标移动到第15行,40列
\007   发蜂鸣生beep

RedHat的字体和背景颜色的改变方法:
命令:
PS1="[\e[32;1m\u@\h \W]\\$"
export PS1="[\e[32;1m\u@\h \W]\\$" 两者的区别请查看环境变量的相关资料
解释:
\e[32;1m:这就是控制字体和背景颜色的转义字符,30~37是字体颜色、40~47是背景颜色
例子中的32;1m数字的位置是可以对调的如\e[1;32m,如果是在X环境下可以更换一下1的范围0~10,可能有的没用处:0或者不写(\e [0;32m或\e[;32m)显示浅颜色,1:显示高亮 4:加下划线.....如果改后的效果不好,但是又还原不了,那就不写m前面的数字,如\e[32;m,或者直接注销再登陆

\u \h \W:这是一些转义字符,下面详细解释:
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$
\n :新建一行
字体并不局限于一个颜色,可以有多个颜色:
PS1="[\e[32;1m\u@\e[35;1m\h \e[31;1m\W]\\$"
以上两个命令在注销后再登陆就失效了,用下面方法使其永久生效:
vi /etc/profile
在"export PATH ....."下面添加一行:export PS1="[\e[32;1m\u@\h \W]\\$"
注销再登陆,就成功了,如果没生效,使用source /etc/profile 命令试试,或者直接重启机器。

颜色代码:
字背景颜色范围: 40-49 字颜色: 30-39
40: 黑 30: 黑
41: 红 31: 红
42: 绿 32: 绿
43: 黄 33: 黄
44: 蓝 34: 蓝
45: 紫 35: 紫
46: 深绿 36: 深绿
47: 白色 37: 白色
ANSI控制码:
\033[0m 关闭所有属性
\033[1m 设置高亮度
\03[4m 下划线
\033[5m 闪烁
\033[7m 反显
\033[8m 消隐
\033[30m -- \033[37m 设置前景色
\033[40m -- \033[47m 设置背景色
\033[nA 光标上移n行
\03[nB 光标下移n行
\033[nC 光标右移n行
\033[nD 光标左移n行
\033[y;xH设置光标位置
\033[2J 清屏
\033[K 清除从光标到行尾的内容
\033[s 保存光标位置
\033[u 恢复光标位置
\033[?25l 隐藏光标
\33[?25h 显示光标



http://www.cnblogs.com/RigorosLee/archive/2011/03/23/1992263.html
第二个部分是:

\[\e[1;32m\]\u@\h:\[\e[0m\e[1;34m\]\W\[\e[1;34m\]\$ \[\e[0m\]
我们先来研究第二部份,这个部分看起来比较简短。其中我们可以看到一个 PS1 里面非常基本的结构:\u@\h:\W\$ ,这个结构在我的电脑里就显示为 upsuper@upsuper-laptop:~$ 大家大概可以猜到里面是什么意思了吧。

这个基本骨架理出来,剩下的是看过去最蛋疼的那堆莫名其妙的符号了~我们看到很多 \e[ 这样的东西,事实上这个叫做 ANSI 控制码,在 Linux 和 Windows 的命令行里面都是通用的,\e 是 Escape 键的键码,\e[ 是一切 ANSI 控制码的开头。首先来到 \e[1;32m 这个控制码,这表示设置这个符号之后的字符为亮绿色,而 \e[0m 则是清除所有格式,这样看有没有一点清晰了呢?更多用法可以参考维基百科条目ANSI escape code。

之后还有两个东西不清楚,就是 \[ 和 \],这两个并不是 ANSI 控制码,而是 Bash 提供的转义符。他们的解释说实话我没看太懂,不过我的理解大概就是,夹在 \[ 和 \] 之间的部分 Bash 假定他们的宽度为0,不正确地标注这两个符号会导致 Bash 的换行错误。总之在所有控制符两侧都加上这两个就对了~



文本终端的颜色可以使用"ANSI非常规字符序列"来生成:

echo -e "\033[背景;前景;光标mME \033[0m"

举例:  echo -e "\033[44;37;5m ME \033[0m COOL"

以上命令设置背景成为蓝色,前景白色,闪烁光标,输出字符"ME",然后重新设置屏幕到缺省设置,输出字符 "COOL"。"e"是命令 echo 的一个可选项,它用于激活特殊字符的解析器。"\033"引导非常规字符序列。"m"意味着设置属性然后结束非常规字符序列,这个例子里真正有效的字符是 "44;37;5" 和"0"。修改"44;37;5"可以生成不同颜色的组合,数值和编码的前后顺序没有关系。


变为:
PS1="\e[32;40m\w> "
到现在为止,提示行尽管已经很不错了,但仍不太完美。在 bash 显示出工作目录以后,我们需要使用 "\e[0m" 序列将颜色重新设置为正常值。
PS1="\e[32;40m\w> \e[0m"
这个定义将显示一个漂亮的绿色提示行,但仍需要做一些扫尾工作。有时我们不需要包括 "40" 这个背景颜色设置,因为它将背景设置为黑色,而黑色是默认颜色。此外,绿色还很暗;我们通过添加一个 "1" 颜色代码来修正这个问题,这将启用更亮的加粗文字。除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间,这样就使自动换行能够继续正常工作。没有这两个转义序列,尽管我们有了一个非常漂亮的提示行,但是如果键入的命令恰好到达终端的最右端,就会造成显示混乱。下面是最终的提示行:
PS1="\[\e[32;1m\]\w> \[\e[0m\]"
我们也不用担心在同一个提示行中使用几种颜色,就像下面这样(我的颜色配置):
PS1=\[\e[36;1m\]\u@suse:\[\e[32;1m\]\w\[\e[36;1m\]> \[\e[0m\]



但是,当我们把这个配置写入.bashrc文件后,会发现一个问题,那就是terminal的标题栏变成了一个永恒不变的"Termianl"了,这可能并不是我们希望的,默认的显示用户名、主机名和当前工作路径(我比较喜欢这个默认的哈),我们可能希望把他配回来。其实配置标题栏和上面说过的配置提示符内容差不多,只是要加上:
\e]2;...\a
中间省略号就可以加我们想让标题栏显示的内容了。
例如我们把 "\e]2;This is my terminal:>\a" 加进PS1变量中(当然也需要用"\["和"\]"转义序列括起来),标题栏中就会显示  This is my terminal:>


个提示行将全部信息显示在标题栏上,而不是显示在终端上,终端对一行可以显示多少字符有限制。顺便提一句,确保用 "\[" 和 "\]" 将您的标题栏序列括起来(因为就终端而言,这个序列是非打印序列)。将大量信息放在标题栏中的问题是,如果您使用非图形终端(如系统控制台),则看不到这些信息。为了解决这个问题,可以在您的 .bashrc 中添加以下几行:
if [ "$TERM" = "linux" ]
then
#we're on the system console or maybe telnetting in
export PS1="\[\e[32;1m\]\u@\H > \[\e[0m\]"
else
#we're not on the console, assume an xterm
export PS1="\[\e]2;\u@\H \w\a\e[32;1m\]>\[\e[0m\] "
fi
这个 bash 条件语句将根据当前的终端设置动态设置提示行。为了获得一致性,您一定希望配置您的 ~/.bash_profile,以便它在启动时搜索 (source) 您的 ~/.bashrc。确保您的 ~/.bash_profile 文件中有以下这样一行:
source ~/.bashrc
这样,无论您开启一个登录 shell 还是一个非登录 shell,都会获得同样的提示行。
好了,您已掌握了提示行魔术。现在尽情享受一下,制作一个漂亮的彩色提示行吧



http://www.tuicool.com/articles/qeENNz
http://blog.csdn.net/signjing/article/details/8205785
linux ansi控制码

简介
ANSI控制码用于在字符显示系统中控制光标移动和字符色彩等,常用于BBS系统中。

ANSI ESCAPE SEQUENCES又称为VT100系列控制码,国内译为ANSI控制码。顾名思义,需要VT100系列终端的支持,当然现在已经不在局限于VT100了,包括xterm,linux都能很好完成。

ANSI控制码开始的标志都为ESC[,ESC对应ASCII码表的033(八进制),linux命令echo用-e启用转义,\033来输入ESC,\033[31m即为ESC[31m。  

格式
echo:-e 用来开启echo中的转义,\e 或 \033 来输出Esc符号

格式: echo -e "\033[字背景颜色;字体颜色m字符串\033[0m"

注意m后面紧跟字符串。

例如:

echo -e "\033[41;36m something here \033[0m"

其中41的位置代表底色, 36的位置是代表字的颜色

那些ascii code 是对颜色调用的始末

 \033[ ; m ......\033[0m



http://blog.chinaunix.net/uid-14358420-id-3408534.html

这样解析下bash版本的字串 "\e[s\e[0;$((COLUMNS-27))H$(date)\e[u" 。
\e[s  :保存光标位置
\e[0;$((COLUMNS-27))H  在终端第一行的倒数27个字符的位置开始打印字符
$(date)  打印date命令的输出
[u 恢复光标位置


http://www.4ucode.com/Study/Topic/1611190
\d :代表日期,格式为weekday month date,例如:"Mon Aug 1"
\H :完整的主机名称。例如:我的机器名称为:fc4.linux,则这个名称就是fc4.linux
\h :仅取主机的第一个名字,如上例,则为fc4,.linux则被省略
\t :显示时间为24小时格式,如:HH:MM:SS
\T :显示时间为12小时格式
\A :显示时间为24小时格式:HH:MM
\u :当前用户的账号名称
\v :BASH的版本信息
\w :完整的工作目录名称。家目录会以 ~代替
\W :利用basename取得工作目录名称,所以只会列出最后一个目录
\# :下达的第几个命令
\$ :提示字符,如果是root时,提示符为:# ,普通用户则为:$

    CentOS中关于这些:
\a     an ASCII bell character (07)
\d     the date in "Weekday Month Date" format (e.g., "Tue May
                     26")
\D{format} the format is passed to strftime(3) and the result is inserted into the prompt string; an empty format results in a locale-specific time representation. The braces are required
\e     an ASCII escape character (033)
\h     the hostname up to the first '.'
\H     the hostname
\j     the number of jobs currently managed by the shell
\l     the basename of the shell's terminal device name
\n     newline
\r     carriage return
\s     the name of the shell, the basename of $0 (the portion
                     following the final slash)
\t     the current time in 24-hour HH:MM:SS format
\T     the current time in 12-hour HH:MM:SS format
\@     the current time in 12-hour am/pm format
\A     the current time in 24-hour HH:MM format
\u     the username of the current user
\v     the version of bash (e.g., 2.00)
\V     the release of bash, version + patch level (e.g., 2.00.0)
\w     the current working directory, with $HOME abbreviated with a tilde
\W     the basename of the current working directory, with $HOME abbreviated with a tilde
\!     the history number of this command
\#     the command number of this command
\$     if the effective UID is 0, a #, otherwise a $
\nnn   the character corresponding to the octal number nnn
\\     a backslash
\[     begin a sequence of non-printing characters, which could be used to embed a terminal control sequence into the prompt
\]     end a sequence of non-printing characters


    于是可以根据这些指定自己喜欢的命令提示符格式:

PS1="\u@\h:\w\$ " 
    但是这样设置之后显示的提示符是没有颜色的,如果希望加入颜色设置,可以这样:

PS1="\e[1;32m\u\e[m\e[1;33m@\e[m\e[1;35m\h\e[m:\w\$ " 
    此时,在终端中的显示应该是彩色的提示符了,其中的\e[1;xxm和\e[m就是改变终端字体颜色的部分,前者是修改颜色,后者是恢复到正常显示。但是 这时还会有问题,在提示符中输入第一行时,回车换行不正常,导致显示很混乱,因此,除了这个修改之外,还需要将全部非打印字符用专用的 bash 转义序列 "\[" 和 "\]" 括起来。这两个序列通知 bash,被括起来的字符不占用行上的任何空间 ,这样就使自动换行能够继续正常工作。最终版本如下(可解决带颜色提示符的不换行问题):

PS1="\[ \e[1;32m\] \u\[ \e[m\] \[ \e[1;33m\] @\[ \e[m\]\[ \e[1;35m\] \h\[ \e[m\] :\w\$ "

--EOF--

goagent小试

| No Comments
因为一直都使用ssh来进行必要时的访问,所以最近几年都没怎么折腾翻墙的事情。今天在同学的群里听说goagent还不错,恰好下午很早回家,也就折腾了一下,感觉非常好!

参考信息:
https://code.google.com/p/goagent/ 这里的内容多看看基本够了。
在笔记本上也都装了,后续确实可以很方便的直接使用了,而且速度也非常不错。

接下来就是还想让手机也能用上,参考:
https://code.google.com/p/goagent/wiki/GoAgent_IOS,可惜没一次搞定,再找:
http://ifan.178.com/thread-1387056-1-1.html
http://www.i7086.com/goagentwufafangwendejiejue/comment-page-2
多看看,要点:
1)Cydia开发者模式
2)安装Python,goagent-toggle(sbsettings开关), goagent-local
3)安装证书,使用Safari安装,iFile怎么安装我没学会
4)如果访问异常,注意修改proxy.ini中的cn->hk https等信息
5)pac文件注意:打开设置- WiFi(国行叫无线局域网)-点击您热点右侧的箭头-拖到最下方"http代理" 选择自动然后输入"
file://localhost/var/mobile/goagent-local/8087.pac"或"file://localhost/var/stash/Applications/MobileSafari.app/8087.pac"(需要将8087.pac从var/mobile/goagent-local/ 移到Applications/MobileSafari.app/ 下 )(利用pac翻比全局好),用后面的这个路径。


--EOF--

R1 的transmission版本问题

| No Comments

今天抽空看了一下挂机2年多的R1的PT种子,有24个已损毁的,仔细查看,发现除14个"torrent not registered with this tracker"之外,另外的10个HD的种子居然是因为我的transmission版本2.0.3已经不被支持:
Transmission: Linux+Mac 1.92, 1.93, 2.13, 2.21, 2.22, 2.42, 2.52, 2.61, 2.71, 2,72, 2.73, 2.74, 2.75 

升级吧,2年多没折腾,都忘记怎么玩了,兴趣已过,也不想节外生枝,弄残了就又要搭进去好多时间。

找到之前玩弄时候的论坛,发现2个升降级的帖子:
http://www.hdpfans.com/thread-80-1-1.html
http://www.hdpfans.com/thread-158776-1-1.html
本来还想去看看是否支持最新版的,但到机器上一看:

/opt/bin # ls transmission* -l
-rwxrwxrwx    1 root     root       556828 Sep 18  2010 transmission-daemon
-rwxr-xr-x    1 root     root       616276 Sep 18  2010 transmission-daemon.1.92
-rwxrwxrwx    1 root     root       587016 Sep 18  2010 transmission-remote
-rwxr-xr-x    1 root     root       646464 Sep 18  2010 transmission-remote.1.92
-rwxrwxrwx    1 root     root       557240 Sep 18  2010 transmissioncli
-rwxr-xr-x    1 root     root       618884 Sep 18  2010 transmissioncli.1.92
-rwxr-xr-x    1 root     root         1745 Sep 12  2010 transmissionguard.sh

竟然发现之前的机器我备份过transmission-daemon.1.92这个版本,而且也是被支持的,这就省心了,直接修改
/opt/etc/init.d/S50transmission的启动程序:
#/opt/bin/transmission-daemon --paused -t -u root -v toor -g $CONFIGDIR -w $DOWNDIR
/opt/bin/transmission-daemon.1.92 --paused -t -u root -v toor -g $CONFIGDIR -w $DOWNDIR

重启程序,种子正常了~

--EOF--

transmission的配置和使用

| No Comments
/opt/etc/init.d/S50transmission
内容为
#!/bin/sh
/opt/bin/transmission-daemon --paused -t -u root -v toor -g /opt/etc/transmission
(-u root -v toor 这两个参数分别是设定账号和密码)
 
transmission-remote是windows下的客户端管理工具。

--EOF--

Putty的session存放信息

| No Comments
How To: Transfer your PuTTY settings between computers
http://downloadsquad.switched.com/2007/02/01/howto-transfer-your-putty-settings-between-computers/


可以使用regmon观察:HKEY_CURRENT_USER\Software\SimonTatham\PuTTY\Sessions里面


绿色Putty的做法----将putty session保存到一个reg文件中
http://security.javaeye.com/blog/35060

--EOF--

恢复MBR和GRUB

| No Comments

今天成功的使用光盘引导,用SFDISK设置了活动分区到原来的XP系统盘,修复了一下MBR,就可以顺利启动到winxp了。
昨天用优盘做的系统MAXDOS中也有SFDISK,却始终没有成功,这个实际上不应该的,可能是MBR忘记修复或者安装了SFDISK自己的启动管理器?或者是这个版本的SFDISK本身有bug,导致活动分区设置好像无效?
总之,后续这里再出问题可以找个PE系统用MAXDOS系统之类的用SFDISK就可以轻松搞定了,关键点:设置活动分区,修复MBR。

上面修复MBR之后实际Suse系统还是无法正常进入的,于是在进入XP后重新安装了了OpenSUSE中的安装引导程序openSUSE11_3_LOCAL.exe,准备重新来一次安装或者更新过程。和安装一样进入新的安装流程后,开始选择了更新,过程很顺利,基本可以看到数据是没有问题的,就是说之前使用Gparted进行分区没有造成大的问题,只是影响了引导分区。更新完成后直接进入了系统,看到之前安装的软件都还在,感觉不错,迫不及待的直接reboot,很悲剧,提示无合适的引导系统。重新用光盘引导用SFDISK设置了活动分区到XP系统,再次进入安装流程,这次得还是来试试恢复GRUB的操作了。

参考了网上的一些资料,非常简单,只有几步:
1)进入rescue系统
2)运行grub
3)root (hd0,1)  --  输入1之前,可以按TAB会有相关提示
4)setup (hd0)
5)quit

一切搞定,重启后见到了久违的GRUB引导界面。

另外一个磁盘分区管理和修改的工具:SPFDISK,也可以看看。

参考资料:
http://www.chinaunix.net/jh/4/16148.html
http://www.svn8.com/linux/glpz/20090611/6384.html


--EOF--

Pages

May 2016

Sun Mon Tue Wed Thu Fri Sat
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31        

About this Archive

This page is an archive of recent entries in the Soft category.

Mobile is the previous category.

Stock is the next category.

Find recent content on the main index or look in the archives to find all content.