Get SNMP(v3) working on Ubuntu 12.04

I am running an Ubuntu 12.04 as working environment on my local machine. Ubuntu 12.04 is latest LTS (Long Term Support) version so that it's a good choice for a server. I need to install SNMP on my machine recently and I install it by following command

sudo apt-get install snmpd snmp

However it seems doesn't work. After checking the system log, I found the following errors in /var/log/syslog

 snmpd[8461]: /etc/snmp/snmpd.conf: line 90: Error: Already have an entry for this process.
 snmpd[8461]: /etc/snmp/snmpd.conf: line 92: Error: Already have an entry for this process.
 snmpd[8461]: /etc/snmp/snmpd.conf: line 94: Error: Already have an entry for this process.
 snmpd[8461]: /etc/snmp/snmpd.conf: line 106: Error: includeAllDisks already specified.
 snmpd[8461]: /etc/snmp/snmpd.conf: line 106: Error: #011ignoring: includeAllDisks 10%
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name
 snmpd[8461]: error on subcontainer '' insert (-1)
 snmpd[8461]: /etc/snmp/snmpd.conf: line 146: Error: duplicate trigger name
 snmpd[8461]: /etc/snmp/snmpd.conf: line 148: Error: duplicate trigger name
 snmpd[8461]: /etc/snmp/snmpd.conf: line 148: Error: duplicate trigger name
 snmpd[8461]: duplicate table data attempted to be entered. row exists
 snmpd[8461]: Failed to register extend entry 'test1' - possibly duplicate name.
 snmpd[8461]: duplicate table data attempted to be entered. row exists
 snmpd[8461]: Failed to register extend entry 'test2' - possibly duplicate name.
 snmpd[8461]: Turning on AgentX master support.
 snmpd[8461]: Error opening specified endpoint "udp:127.0.0.1:161"
 snmpd[8461]: Server Exiting with code 1

The content of /etc/snmp/snmpd.conf is like

 89                                # At least one  'mountd' process
 90 proc  mountd
 91                                # No more than 4 'ntalkd' processes - 0 is OK
 92 proc  ntalkd    4
 93                                # At least one 'sendmail' process, but no more than 10
 94 proc  sendmail 10 1
 95
 96 #  Walk the UCD-SNMP-MIB::prTable to see the resulting output
 97 #  Note that this table will be empty if there are no "proc" entries in the snmpd.conf file
 98
 99
100 #
101 #  Disk Monitoring
102 #
103                                # 10MBs required on root disk, 5% free on /var, 10% free on all other disks
104 disk       /     10000
105 disk       /var  5%
106 includeAllDisks  10%

145                                    # generate traps on UCD error conditions
146 defaultMonitors          yes
147                                    # generate traps on linkUp/Down
148 linkUpDownNotifications  yes
149
150

So let's fix the problem. I comment the snmpd.conf configurations appeared in syslog, then use command cat /etc/snmp/snmpd.conf | grep -v '#' | grep -v '^\s*$' to get a clean version.

view   systemonly  included   .1.3.6.1.2.1.1
view   systemonly  included   .1.3.6.1.2.1.25.1
rocommunity public  default    -V systemonly
rouser   authOnlyUser
sysLocation    Sitting on the Dock of the Bay
sysContact     Me <me@example.org>
sysServices    72
disk       /     10000
disk       /var  5%
load   12 10 5
trapsink     localhost public
iquerySecName   internalUser
rouser          internalUser
master          agentx
createUser testuser MD5 "testpasswd"
rouser testuser auth

After updated /etc/snmpd/snmpd.conf and /etc/init.d/snmpd restart, now it's working.

$ snmpwalk -v 3 -l authNoPriv -a MD5 -u testuser -A testpasswd 127.0.0.1:161 sysDescr
SNMPv2-MIB::sysDescr.0 = STRING: Linux simon-desktop 3.9.3-generic #19-Ubuntu SMP Wed Oct 9 16:20:46 UTC 2013 x86_64

BTW, The i3 is the best tiling window manager I have ever used.

Bash Shortcuts

CTRL Key Bound

Ctrl + a - Jump to the start of the line
Ctrl + b - Move back a char 
Ctrl + c - Terminate the command 
Ctrl + d - Delete from under the cursor 
Ctrl + e - Jump to the end of the line 
Ctrl + f - Move forward a char 
Ctrl + k - Delete to EOL 
Ctrl + l - Clear the screen 
Ctrl + r - Search the history backwards 
Ctrl + R - Search the history backwards with multi occurrence 
Ctrl + u - Delete backward from cursor 
Ctrl + xx - Move between EOL and current cursor position 
Ctrl + x @ - Show possible hostname completions 
Ctrl + z - Suspend/ Stop the command 

ALT Key Bound

Alt + < - Move to the first line in the history 
Alt + > - Move to the last line in the history 
Alt + ? - Show current completion list 
Alt + * - Insert all possible completions 
Alt + / - Attempt to complete filename 
Alt + . - Yank last argument to previous command 
Alt + b - Move backward 
Alt + c - Capitalize the word 
Alt + d - Delete word 
Alt + f - Move forward 
Alt + l - Make word lowercase 
Alt + n - Search the history forwards non-incremental 
Alt + p - Search the history backwards non-incremental 
Alt + r - Recall command 
Alt + t - Move words around 
Alt + u - Make word uppercase 
Alt + backspace - Delete backward from cursor 

More Special Key bindings

Here 2T means Press TAB twice. And $ is the bash prompt.

$ 2T - Display all available commands(common) 
$ string 2T - Display all available commands starting with string. 
$ /2T - Show entire directory structure including hidden ones. 
$ 2T - Show only sub-directories inside including hidden ones.
$ *2T - Show only sub-directories inside excluding hidden ones. 
$ ~2T - Show all present users on system from "/etc/passwd" 
$ $2T - Show all sys variables 
$ @2T - Show all entries from "/etc/hosts" 
$ =2T - List output like ls or dir

hostname自动变成bogon的问题

Mac下开iTerm2,发现hostname经常自己变来变去的,有的时候是本机的名字,有的时候自己就变成了bogon。一查,发现:

simon@bogon:~$ nslookup > 192.168.1.1 Server: 124.89.1.129 Address: 124.89.1.129#531.1.168.192.in-addr.arpa name = bogon. > 10.1.1.1 Server:     124.89.1.129 Address:    124.89.1.129#53 1.1.1.10.in-addr.arpa   name = bogon.

原来 192.168., 10. 被DNS反向解析成了bogon,换个DNS(比如8.8.8.8)就没问题了

Ubuntu升级导致的udevd错误修复

Linode上的VPS服务器,从Ubuntu Lucid升级至Karmic后,重启后启动失败。用Linode的RemoteAccess连上去看到如下启动错误信息:

init: ureadahead main process (986) terminated wit  status 5                                        
udevd[1012]: failed to create queue file: No such file or directory

udevd[1012]: error creating queue file                                                              

init: udev main process (1012) terminated with sta us 1                                             
init: udev main process ended, respawning                                                           
init: udevmonitor main process (1014) terminated w th status 2                                      
udevadm[1734]: error sending message: Connection r fused                                            

mountall: Disconnected from Plymouth
init: plymouth main process (989) killed by SEGV signal         
init: plymouth-splash main process (1735) terminat d with status 2                                  
init: hwclock-save main process (1740) terminated  ith status 1

经查,由于udevd升级后不支持自动mount自身到/dev节点导致。需要手工修改/etc/fstab文件修复。用Linode的Recure Boot方式启动,mount上原分区,在/etc/fstab最后加入如下一行

dev /dev tmpfs rw 0 0

再次重启,没问题了。

为Windows 7/Windows Server 2008添加IPX协议

Windows 7 或者 Windows Server 2008 默认情况下不支持IPX协议,而在很多需要局域网的游戏中还是经常需要用到IPX协议的。解决办法就是从XP系统中复制出IPX协议的驱动文件,然后在Windows 7的网卡的配置界面中就可以找到IPX协议的添加项了。 相关文件是: X86版本 Windows\inf\netnwlnk.pnf Windows\inf\netnwlnk.inf Windows\System32\rtipxmib.dll Windows\System32\nwprovau.dll Windows\System32\wshisn.dll Windows\System32\drivers\nwlnkflt.sys Windows\System32\drivers\nwlnkfwd.sys Windows\System32\drivers\nwlnkipx.sys Windows\System32\drivers\nwlnknb.sys Windows\System32\drivers\nwlnkspx.sys

x64版本 Windows\nwlnkipx.sys Windows\nwlnknb.sys Windows\nwlnkspx.sys Windows\inf\netnwlnk.inf Windows\inf\netnwlnk.PNF Windows\system32\nwprovau.dll Windows\system32\wshisn.dll Windows\system32\drivers\nwlnkipx.sys Windows\system32\drivers\nwlnknb.sys Windows\system32\drivers\nwlnkspx.sys

利用ipkall+xlite+iptel.org开通google voice

Google Voice开通需要一个米国的电话号码用于确认,所以在去搞Google Voice之前,得先弄到一个免费的、能用的米国电话号码。以下经验是俺综合了各方资料,加上自己研究得出的可能是最顺利的开通方式了,一切顺利的话15分钟就搞定了。

利用iptel.org开一个免费的sip帐号

1、到这里来注册一个iptel.org的帐号:http://serweb.iptel.org/user/reg/

email:写自己的邮件地址 phone: 这里填稍后在ipkall中申请到的电话号码 pick your user name:  选一个用户名,可以用数字、小写字母、点(.) pick password: 输入一个密码,这个是这个sip服务器的认证密码,对应上面的用户名 confirmation password: 重复密码

从www.ipkall.com注册个米国的电话号码

有人说要几天的人工验证时间,我是注册后马上邮箱就收到了电话号码。也许是因为google voice的原因申请号码的人太多——人工验证忙不过来了... ...

配置sip客户端x-lite

http://www.counterpath.com/x-lite-download.html 下载、安装,无需重启。 点左上角的小三角,选择SIP Account Setting开始配置sip账号。用户名和密码,都写刚刚从iptel.org申请到的账户信息。

确认,x-lite会尝试登陆到sip服务器:disconvering network、registering,然后是ready,屏幕上会显示sip的用户名。

开通Google Voice

准备工作做完,现在有了一个米国的电话号码,并配好了客户端能接电话了。现在开始注册google voice。

https://www.google.com/voice(我肉身在国内,可以正常访问。但有的人即使将gmail语言设置为英语,仍然会被提示所在国家未开通服务。难道是因为我曾经在米国用过google maps被记录下来了?访问不了的只能翻墙了)。

选择电话号码、确认就不赘述了,确认用的电话填写刚刚从ipkall申请到的电话号码,到第四步的验证会给出两个数字。打开x-lite,然后点google voice那个页面的“Call Now”,几秒种后x-lite会有一个呼入的电话,接起来,在x-lite的键盘上输入那两个数字。google voice的页面会自动跳转到成功页面。现在你有了两个米国的电话号码,一个是ipkall申请到的,一个是google voice分配给你的电话号码。 因为ipkall申请到的电话号码如果30天内没有电话进来的话,会自动回收注销号码。所以现在就可以用gtalk给自己的ipkall的电话号码打个电话了(自娱自乐、左右互搏)。

注意1:iptel.org申请到的sip可以免费接电话,可以打sip电话,但是是不可以打普通电话的。但google voice的电话号码是可以打普通电话的(无需翻墙),目前给美国和加拿大打是免费的,给国内打是0.02美元一分钟(大概是1毛4人民币)。但是通过web页面的google voice打电话没有电话拨号盘,也就是说如果在语音期间需要输入数字选择菜单的时候,是没办法的。只能通过google chat里面的call phone图标才会有拨号盘(需翻墙获得一个米国的ip地址)。

注意2:用iptel.org申请到的电话号码可以利用sip客户端打sip电话,电话号码就用username@gtalk2voip.com这样的形式(前面是你的sip用户名,后面是sip服务器地址)。比如给自己的google voice打电话,我的sip电话号码就是yuntao.liu@gtalk2voip.com (如果是给gtalk2voip的用户打的话,被呼叫方的gtalk上会有一个添加好友的请求,同意了之后就能接电话了)。

注意3:目前还未找到能够使用google voice的电话号码打电话的sip客户端。

注意4:到现在为止已经你已经有了一个ipkall的电话号码,一个google voice的电话号码,还有对对应的sip帐号。是不是有点乱?我来整理一下,以我自己的账号为例:

电话号码类型 sip号码 电话号码
ipkall yuntao.liu@iptel.org 从ipkall的邮件得到
google voice yuntao.liu@gtalk2voip.com Google voice中选的号码

sip号码,可以在任何一个支持输入字符串格式的电话号码的sip客户端上拨打和接听,拨打对应的数字电话号码会转到sip号码上。google voice的电话号码默认是拨给google chat的,如果不在线则会转给ipkall的电话号码(我们认证的时候就是关联的这个号码)。总结一下:

拨号终端 拨号号码 可行性
实际电话 电话号码
实际电话 sip号码 不可
sip客户端 sip号码 可(看具体客户端支持情况)
sip客户端 电话号码 可(一般都要充值收费)
google voice 电话号码 可(美加免费,国内收费)
google voice sip号码 不可

电话号码指的是ipkall或google voice那里得到的电话号码,以及其它运营商支持的实际电话号码。Sip号码指的是username@iptel.org和username@gtalk2voip.com这样的地址。

此外:还有一个问题是x-lite只能输入数字格式的电话号码,得找一个能输入这种格式的电话的sip客户端,下面推荐两个客户端nimbuzz和fring。

2011-01-18更新:最新版的x-lite 4 已经可以支持username@gtalk2voip.com这样的sip电话号码了。

nimbuzz作为sip客户端接打电话

x-lite不错,不过可惜只是一个sip客户端,也只能打数字形式的电话,不能打sip电话。通常我们要开很多im的客户端,nimbuzz是一个非常好的万金油客户端,除了是一个SIP客户端之外,还是GTalk、MSN、Yahoo、Facebook、twitter、ICQ、myspace等等im的客户端。除了PC版本之外,也有手机版本和Web版本...

这里下载:http://www.nimbuzz.com/en/pc/

下载客户端、注册账号、登陆,在Tools——Option——Call Service,右边sip provider选择Other,然后输入从iptel那儿的sip账号信息。然后就可以接打sip电话了。

Fring作为手机sip 客户端

fring是一个手机上的支持twitter、gtalk、msn、yahoo等IM的客户端,同时也支持SIP。只是可惜的是没有PC上的客户端。

在这里 http://www.fring.com/download/ 。 在手机上安装完成后,启动、选项——转至——addons——SIP,输入iptel.org对应的账户认证信息。

然后,有人给你的google voice的号码拨号,或者给你的ipkall的电话号码拨号,手机都会响了。

注意:没有wifi宽带接入的情况下,语音有延迟。

Gow(Gnu On Windows)

Gow是一个轻量级的Cygwin的替代者,只有10MB左右大小,包含有130多个非常有用的unix命令,例如:

Shell scripting: bash, zsh Compression: gzip, zip, bzip2, compress SSH: putty, psftp, pscp, pageant, plink Download/upload: cURL, wget FTP: NcFTP Editing: vim Text search/view: grep, agrep, less, cat, tail, head File system: mv, cp, du, ls, pwd, rmdir, whereis Development: make, diff, diff3, sleep, cvs, dos2unix, unix2dos

主页:http://wiki.github.com/bmatzelle/gow/ 安装程序下载:http://github.com/bmatzelle/gow/downloads