Git

一. 配置用户信息

$git config --global user.name "Yuzifu"
$git config --global user.email "yuzifu@mycompanydomain.com"

二. 创建仓库

$git init
$git add -A
$git commit -m "Initial work space."

三. 恢复到之前提交的版本
1. 临时恢复

$git checkout [VersionNO] [FileName/DirectoryName]

如果没有指定 VersionNO , git 会恢复到最后一个提交的版本.
VersionNO 不一定要写全, 只要能识别, 可以是VersionNO的前 N 个字符.
VersionNO 可以是 “HEAD” , 表示当前 branch 的最后一个提交的版本, “HEAD^” 表示父版本, “HEAD^^” 表示祖父版本, “HEAD~4” 表示祖父之祖父版本.

如果指定了文件名或目录名, git 会只恢复指定的内容, 并且是以静默的方式覆盖原有内容.

如果这时编辑并提交, git 会创建另一个 branch .
要回到原来的版本, 恢复默认 branch 即可.

$git checkout master

2. 永久恢复

$git reset --hard [VersionNO]

如果没有指定 VersionNO , git 会恢复到最后一个提交的版本.
VersionNO 不一定要写全, 只要能识别, 可以是 VersionNO 的前 N 个字符.
VersionNO 可以是 “HEAD” , 表示当前 branch 的最后一个提交的版本, “HEAD^” 表示父版本, “HEAD^^” 表示祖父版本, “HEAD~4” 表示祖父之祖父版本.

如果 git 里包含有比指定 VersionNO 更新的版本, 则在执行此动作后, 更新的版本都会永久删除.

四. 查看
1. 查看日志

$git log

2. 查看状态

$git status

3. 查看差异

git diff

五. Remote
1. 创建远程仓库
远程仓库位于 windows 共享

$pushd //<RemoteServer>/PathToRepo/
$git init --bare
$git popd

2. 添加远程仓库

$git remote add <RemoteName> <RemoteURL>

3. 显示远程仓库

$git remote show [RemoteName]

4. 从远程仓库获取更新

$git fetch <RemoteName> <BranchName>

5. 合并远程仓库的更新

$git checkout master
$git merge <RemoteName>/<BranchName>

$git pull <RemoteName> <BranchName>

6. 推送本地更新到远程仓库

$git push <RemoteName> <BranchName>

Web连接被无规律断开

背景:
一个虚拟主机,独立IP: 1.1.1.1,为域名a.b.c提供web服务。a.b.c域名在国内注册,DNS记录由afraid.org管理。

道具:
PC1: win7(电信2M adsl/dns:8.8.4.4、208.67.222.222)+IE8+Chrome11
PC2: win7(电信4M adsl/dns:8.8.4.4、208.67.222.222)+IE8+Chrome9
Laptop: win7(dns:8.8.4.4、208.67.222.222)+IE8+Chrome9
Server1: win2k3(电信IDC 100M共享/dns:8.8.4.4、208.67.222.222)+IE8

本市另一个区的一台PC3:XP(电信接入,其它参数不详)+IE7
本市另一区的一台PC4:win7(铁通2M adsl/dns:8.8.4.4、208.67.222.222)+IE8
本省另一市的一台PC5:Win(参数不详)
另一省的一台PC6:XP(电信2M adsl,其它参数不详)+IE7

现象:
2011.02.20晚上开始从PC1访问a.b.c会随机出现以下三种情况之一:
1,正常打开。
2,能显示部分页面内容,但格式不正确。
3,打不开,Chrome里显示”错误 101 (net::ERR_CONNECTION_RESET):The connection was reset.”

在上面三种情况之一刷新页面,会随机出现上面的三种情况之一。
使用Fiddler进行侦测,发现第2、3种情况时Fiddler会提示若干”远程主机强迫关闭了一个现有的连接。”

PC2访问a.b.c时出现PC1相同的现象,Laptop在PC1、PC2网络环境下访问a.b.c时亦出现相同现象,Server1访问a.b.c时正常,PC3、PC4、PC5、PC6访问a.b.c时均正常。

处理:
1,Server1、PC3、PC4、PC5、PC6均能正常访问说明Web服务器没问题,Web服务器IP也没有被GFW加入黑名单。
2,PC1、PC2、Laptop能正常访问其它网站,说明PC1、PC2、Laptop配置正常,本地网络也正常。
3,那么问题只能是出在本区的电信设备上。

于是开始找证据支持这个观点。在PC1打开Fiddler放在左边,打开Chrome放到右上,打开IE放在右下,然后一边不停地打开Chrome/IE、输入a.b.c、刷新、关闭,一边查看Fiddler的结果。

非正常显示和打不开时,Fiddler不停地显示”远程主机强迫关闭了一个现有的连接。” 这样进行了半个多小时后,突然发现,正常打开a.b.c后转变成非正常显示或者打不开之前,总是会关闭一个含有/twip/路径的连接,也就是说在关闭这个连接之后,访问a.b.c就会出现异常。

twip是a.b.c空间里安装的一个twitter应用,PC1、PC2、Laptop均安装了Chrowety,并通过它来连接twitter。之前Chrowety一直正常使用。难道会是它被GFW墙了,连累了访问a.b.c?

于是卸载了Chrowety,这时连接a.b.c正常,使用Laptop访问a.b.c也正常。为了确认这个原因,我再次安装Chrowety并设置好,访问a.b.c时故障现象重现。

GFW很强大,升级后的GFW更强大。

Vyatta里进行端口映射

一、在NAT里设置转发

vyatta@vyatta# show service nat rule 30
destination {
     port 22222
}
inbound-interface pppoe0
inside-address {
     address 192.168.1.186
}
protocol tcp
type destination
[edit]
vyatta@vyatta#

二、防火墙里放行

vyatta@vyatta# show firewall name OnWAN rule 15
action accept
destination {
     port 22222
}
protocol tcp
[edit]
vyatta@vyatta#

折腾

身逢乱世,时不时地出点岔子也就算是有理由了。网站时不时停摆,ISP就不停地更换IP,但想不到后来竟然连ISP的NS服务器也被封了。为了不再受这样的鸟气,我把空间、DNS解析全搬到国外去了。

终于可以安静了。

因为换IP,一台SQL SERVER服务器连接不上。于是跑到服务器那边去看,发现除了连接Internet的网卡IP更换为了新IP,连OPENVPN的虚拟网卡也被“技术人员”修改为了新IP。

人才啊,难怪连接不上。

不过事情并未就如此完结,VPN是连接上了,SQL SERVER还是连接不上,于是又去了一趟服务器那边,发现SQL SERVER服务不能启动,经过查询日志才知道,由于更改了操作系统用户帐号,而SQL SERVER服务的登录帐号还是原帐号,导致登录不成功,所以SQL SERVER不能启动。

Install pptp and radius on lenny

1,install all packages
#apt-get install pptpd freeradius radiusclient1

2,configure pptp
#vim /etc/pptpd.conf

localip 192.168.42.122
remoteip 192.168.42.123-200

#vim /etc/ppp/pptpd-options

ms-dns 8.8.4.4
ms-dns 208.67.222.222
plugin /usr/lib/pppd/2.4.4/radius.so
radius-config-file /etc/radiusclient/radiusclient.conf

3,configure radius
#vim /etc/freeradius/client.conf

client 127.0.0.1 {
 secret  = mysecret
 nastype     = other
}

#vim /etc/freeradius/users

myusername Cleartext-Password := “mypassword”
 Service-Type = Framed-User,
 Framed-Protocol = PPP,
 Framed-IP-Address = 192.168.42.123,
 Framed-IP-Netmask = 255.255.255.0,
 Framed-Routing = Broadcast-Listen,
 Framed-Filter-Id = “std.ppp”,
 Framed-MTU = 1500,
 Framed-Compression = Van-Jacobsen-TCP-IP
 
 
4,configure radclient
#vim /etc/radiusclient

127.0.0.1           mysecret
 
#vim /etc/radiusclient/dictionary.microsoft

add content from http://wiki.freeradius.org/PopTop

#vim /etc/radiusclient/dictionary

INCLUDE /etc/radiusclient/dictionary.microsoft
INCLUDE /etc/radiusclient/dictionary.merit
5,test radius
#radtest myusername mypassword 127.0.0.1 0 mysecret

6,if OS not exist /dev/ppp device,creat it
#mknod /dev/ppp c 108 0

布署jabber系统之软件篇

      以前使用过TM的企业群,也使用过RTX来作为企业内部通讯系统,后来又尝试了jive,不过最终也没有布署下去.

      现在又有了这种需求,首先想到的是使用openfire.在安装完成之后登录了它的web后台,现在的版本比之前强了很多,不仅支持集群共享花名册主流数据库以及ldap/ad认证,并且还开源了.因为想获得记录聊天信息和客户端自动接收文件传输的功能,所以就又尝试了颇为流行的ejabberd.

      安装完ejabberd之后,登录了它的web后台,因为习惯了openfire,所以刚开始觉得怪怪的,不过一下子就熟悉了.ejabberd的最大特点是它天生善于支持集群.除此之外也能支持主流数据库及共享花名册.不过在它的后台我也没有找到上面我提到的需要的两个功能.于是想看看它的插件里有没有能实现这两个功能的.很可惜的是,只看到一个可以记录聊天信息的插件,而实现自动接收文件传输的插件没有找到.并且它的插件是以源码方式提供的,想使用的话要自己从svn服务器同步下来,然后安装好erlang,再自己编译出来.

      我可没有那么多的时间来玩它,于是又回到openfire,在它的插件里找,跟ejabberd一样,也是只有实现记录聊天信息的插件,实现自动接收文件传输的插件依然没有.

      接下来说说客户端.

      在xmpp.org/software/clients.shtml列表里的,我只对spark/tkabber/pandion有意向.spark是openfire官方的客户端,在使用的过程中发现它的字体很小,它可以定制的字体大小只有聊天窗口和花名册列表,想要修改其它字体的大小就必须修改源码.它的最后一个正式版是2007年发行的2.5.8,在2008年的时候官方发行了一个2.6.0beta2,因为官方对spark已经失去了兴趣,所以到现在spark的svn源里依然还是beta2.

      接下来是tkabber,它是ejabberd所推荐使用的,它与ejabberd一样,也是由俄罗斯人开发的,它的风格看起来像是xchat,并且由于编程环境是Tcl/Tk,它的界面看起来有点奇怪,而配置选项界面则相当奇怪.虽然我很喜欢tkabber,但其它用户是没办法接受这种奇异的非中文客户端的.

      最后是pandion了,在之前试用jive时我使用的客户端就是pandion,我知道它本应该是最适合的客户端的,它的中文界面很漂亮,是我们所习惯的排列方式,其它用户也都这么反映.但是在试用的过程中发现,用它作为客户端在传输文件时只要接收方确认的晚一点,就会传输失败.还有一个问题是与它兼容最好的系统是xp,在更新一些的win系统里容易崩溃退出.

      现在我所使用的组合是openfire+spark,有点遗憾的是自动接收文件传输功能没能实现,另外还有一个很糟糕的问题是spark不支持自动转变用户状态.

“本地设备名已在使用中”

环境:
两台交换机(一台DES3026,一台非网管)未经过任何设置连接若干PC,一台samba服务器连接在非网管交换机上提供文件共享服务。

前因:
在DES3026上设置两个vlan,PC、非网管交换机和samba服务器接在相同vlan的端口。

现象:
在PC里把samba共享目录映射成win盘符后,每次登录第一次打开这个盘符会弹出警告对话框:“本地设备名已在使用中。此连接尚未还原。”

分析
故障前后PC和samba服务器没有经过任何改动,唯一的变动是交换机划分了vlan,于是至电dlink客服,得到的回答是划分vlan后,连接另一台非网管交换机,把它当成一台PC就可以了。
后来尝试把samba服务器连接在非网管交换机上,这时故障解除。

原因:
不明。

DES-3026 + m0n0 1.3 b16 实现vlan

我原先的网络是192.168.0.0/24,后来为了设置vlan,就把m0n0的lan IP改为192.168.12.2/24了。

2009-04-14_142518

具体过程如下:

一、交换机设置

有人说在交换机上做好vlan后,把连接m0n0的端口设置trunking,但是我的3026交换机做不到。

所以改为这种方法:

vlan10:             2-19 untag
                             20 tag

vlan20:                  20 tag
                        21-26 untag

m0n0连接到3026的20端口

二、m0n0设置

1,Interfaces –> (assign) –> vlans

在这里添加vlan10和vlan20

2009-04-14_142048

2,Interfaces –> (assign) –> Interface assignments

在这里指定vlan 10的接口为vlan10,vlan 20的接口为vlan20

(其实这里只是点+号而已)

2009-04-14_142100

3.1,Interfaces –> (assign) –> OPT1
在这里激活vlan10的接口

"description"填写为"vlan10"
打勾"enable optional 1 interface"
"bridge with"选为"none"
"ip address"填为"192.168.0.2/24"

2009-04-14_142122

3.2,Interfaces –> (assign) –> OPT2
在这里激活vlan20的接口

"description"填写为"vlan20"
打勾"enable optional 2 interface"
"bridge with"选为"none"
"ip address"填为"192.168.5.2/24"

2009-04-14_142135

4.1 Firewall –> Rules –> vlan10
这里要添加允许vlan10网段上网的规则
vlan互访限制也在这里设置,这里的规则直接影响到vlan间的互访

同时要限制vlan10客户端的上网行为也是这里设置规则

2009-04-14_142159

4.2 Firewall –> Rules –> vlan20
这里要添加允许vlan20网段上网的规则
vlan互访限制也在这里设置,这里的规则直接影响到vlan间的互访

同时要限制vlan20客户端的上网行为也是这里设置规则

2009-04-14_142209

题外话:
以上方法虽然实现了我的要求,但跟我想象中的效果相差很大。

我的想法是:
只是在交换机上划分vlan,原来所有客户端不做更改,还是原来的IP,原来的网关,各客户机都能上网,但不同vlan的客户端不能互访。