Cacti and snmpd

On the machine being monitored, check the snmpd configuration file, you will find some items like following:

	$ cat /etc/snmp/snmpd.conf
	rocommunity public 
	rwcommunity admin
	agentaddress tcp:161
	If you want to enable Location and contact, add:
	syslocation Bat. C2
	syscontact someone@somewhere.org

On the monitor PC, we can use following command to view the monitored machine’s status:

	$ snmpwalk -c Trusty -v 2c 10.0.0.221:661
	or
	$ snmpwalk -c Trusty -v 2c 10.0.0.221

How to configure cacti

Add a new device for monitoring: Console-> Management->Devices, add new, the configuration should like following:

Alt text

After save, you should view the result displayed like:

	ArchLinux (10.0.0.221) 
	 SNMP Information
	System:Linux DashArch 3.11.6-1-ARCH #1 SMP PREEMPT Fri Oct 18 23:22:36 CEST
	 2013 x86_64
	Uptime: 1137 (0 days, 0 hours, 0 minutes)
	Hostname: DashArch
	Location: Unknown
	Contact: root@localhost

Draw disks

Add following line into snmpd.conf

	includeAllDisks

But I failed, later will change. ###Add Graphs Click “Create Graphs for this Host”, then you will asked to add the graphs.
After you add the graphs, add a new graph trees. Then add a Tree Items, Parent -> [root] Tree Item Type –> Host, Host –> ArchLinux(10.0.0.221), then save.
Now click on graphs, you can get your tree and view all of the images.
###Add Device for Winxp Install the snmp service under control pannel.
enable the snmp service in Administration tools -> Service.
In cacti, add a new equipment, host templates choose “Windows 2000/XP host” , Downed Device Detection choose “SNMP uptime” , then add your own data source and graphics.

NetBSD Start

###Installation and Configuration Download the install.iso and install it in the virtualbox.
Then add http_proxy, https_proxy, ftp_proxy, ftps_proxy into the .profile file.
visudo add the current user to the sudo list, then add Defaults env_keep to the http_proxy, etc, because we want to use pkg_add under the sudo priviledge.

###Updating the software repository snapshot Edit the Package path via:

	 export PKG_PATH=ftp://filedump.se.rit.edu/pub/OpenBSD/5.3/`machine -a`/

Update the ports configuration database:

	$ cd /tmp
	$ ftp ftp://filedump.se.rit.edu/pub/OpenBSD/5.3/ports.tar.gz
	$ cd /usr
	$ sudo tar xzf /tmp/ports.tar.gz

Now you got the updated port information.

###Search and install specified packages via ports system Take vim installation for example:

	$ cd /usr/ports
	$ make key=vim describe
	$ make search key=****
	$ cd /usr/ports/editors/vim
	$ sudo make install
	or
	$ sudo make install clean clean-depends

Then the ports will take a long,long time to download all of the packages and start to build. Strangely, this command installed gvim into the system.

My Translator in ArchLinux+Awesome(2)

###Prefix 3 days ago I wrote a simple translator on my ArchLinux which could pop-up a notification window when I query a word. But when I use it at company it failed. Becaus the firewall has banned the communication to Google’s API. Thus I have to write another version of translator, which could get the result from the local database. ###Preparation python-stardict is a great library for querying word from stardict’s dictionary, you can get it via:

	$ git clone https://github.com/pysuxing/python-stardict.git

Also you have to download stardict’s dictionary from http://abloz.com/huzheng/stardict-dic/, you can choose whatever you like dictionary, then uncompress it into your python-stardict located directory. ###Coding Open stardict.py with your favorite editor, adding a function at the end of the file. The code snippet is listed as following:

def my_read_dict_info():
    """
    """
    my_ifo_file = "/home/Trusty/code/python/python-stardict/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.ifo"
    my_idx_file = "/home/Trusty/code/python/python-stardict/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.idx"
    my_dict_file = "/home/Trusty/code/python/python-stardict/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.dict.dz"
    #########Uncomment them for other dictionaries ######
    #my_dict_file = "stardict-dictd_www.dict.org_gcide-2.4.2/dictd_www.dict.org_gcide.dict.dz"
    #my_idx_file = "stardict-dictd_www.dict.org_gcide-2.4.2/dictd_www.dict.org_gcide.idx"
    #my_ifo_file = "stardict-dictd_www.dict.org_gcide-2.4.2/dictd_www.dict.org_gcide.ifo"
    #my_ifo_file = "stardict-longman-2.4.2/longman.ifo"
    #my_idx_file = "stardict-longman-2.4.2/longman.idx"
    #my_dict_file = "stardict-longman-2.4.2/longman.dict.dz"
    my_ifo_reader = IfoFileReader(my_ifo_file)
    my_idx_reader = IdxFileReader(my_idx_file)
    my_dict_reader = DictFileReader(my_dict_file, my_ifo_reader, my_idx_reader, True)
    cmdargs = str(sys.argv) ## args
    result = my_dict_reader.get_dict_by_word(str(sys.argv[1]))  ## Using args[1] for querying
    print result[0].values()[0]		## output result in terminal
    result_str = "\'<span color=\"green\" size=\"14000\">"+result[0].values()[0]+"</span>\'"	## Build the command line for notify-send
    #print result_str
    call(["notify-send", str(sys.argv[1]), result_str])		## Call notify-send to print on screen, last for 5 seconds
    #call(["echo", commandstr])
    #output = subprocess.check_output(["echo", commandstr])
    #p1 = subprocess.Popen(['echo','-e', commandstr], stdout=subprocess.PIPE)
    #p1 = subprocess.Popen(['printf', commandstr], stdout=subprocess.PIPE)
    #p2 = subprocess.Popen(['awesome-client', '-'], stdin=p1.stdout, stdout=subprocess.PIPE)
    #p1.stdout.close()
    #output = p2.communicate()[0]
    #print "*****"
    #print output

# read_ifo_file("stardict-cedict-gb-2.4.2/cedict-gb.ifo")
# read_idx_file("stardict-cedict-gb-2.4.2/cedict-gb.idx")
# read_dict_info()
my_read_dict_info()

Clean code:

def my_read_dict_info():
    """
    """
    my_ifo_file = "/home/Trusty/code/python/python-stardict/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.ifo"
    my_idx_file = "/home/Trusty/code/python/python-stardict/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.idx"
    my_dict_file = "/home/Trusty/code/python/python-stardict/stardict-langdao-ec-gb-2.4.2/langdao-ec-gb.dict.dz"
    my_ifo_reader = IfoFileReader(my_ifo_file)
    my_idx_reader = IdxFileReader(my_idx_file)
    my_dict_reader = DictFileReader(my_dict_file, my_ifo_reader, my_idx_reader, True)
    cmdargs = str(sys.argv) ## args
    result = my_dict_reader.get_dict_by_word(str(sys.argv[1]))  ## Using args[1] for querying
    print result[0].values()[0]		## output result in terminal
    result_str = "\'<span color=\"green\" size=\"14000\">"+result[0].values()[0]+"</span>\'"	## Build the command line for notify-send
    call(["notify-send", str(sys.argv[1]), result_str])		## Call notify-send to print on screen, last for 5 seconds

my_read_dict_info()

###Configuration You can add an alias into your ~/.bashrc

	alias mydict='python2 /home/Trusty/code/python/python-stardict/stardict.py'

Or you can add an executable file named /bin/mydic which contains:

#!/bin/bash
python2 /home/Trusty/code/python/python-stardict/stardict.py $@

###Result See the following images for result:

Alt text
Alt text

The query result will vanished in 5 seconds. ###TBD

  • How to automatically record every query?
  • How to replace the python-stardict with my own library(Written in C, much more fast?)?
  • How to automatically judge english/chinese, or other languages?
  • Considering Error Handling.

Things to be done in these days

There are following things to be done in recent days:

  • Using a local dictionary for refering the words [Currently Done]
  • SNMP on different equipments [Currently Done]
  • Try installing and using FreeBSD/NetBSD [Currently Done]
  • Using python to do image manipulation
  • Using Python and other software to generate the big alubum pictures which contains different small pictures
  • How to compare images using Linux scripts
  • How to create a local search engine on my personal web server. [Currently Done]
  • werc installation

This is an H1

Install SNMPD in OpenWRT

###Install snmpd

	$ opkg update && opkg install snmpd

The configuration file is /etc/config/snmpd, the configure file could be finetuned. while the file /etc/init.d/snmpd script will make snmpd program to load another cutom config
snmpd is too big for embedded system, so we use mini-snmpd for openwrt. ###Install mini-snmpd

	$ opkg update && opkg install mini-snmpd

The configuration file is located at /etc/config/mini_snmpd, edit this file,for enable the default configration from option enable 0 to option enable 1, this will make mini_snmpd start for default.
###Use cacti Server Monitor to view the result In Ubuntu, type:

	$ apt-get install cacti cacti-spine

After the installation, you should visiti http://Your_ip_address/cacti for loging, the username and password are “admin” by default, but you will be asked to change it after the first login.
Go to “Device” click add at the right top, this will ask you to add an equipment for monitoring.
Fill in the ip address and select the type to “Generic SNMP-enabled Host”, then add some additional notes if necessary.
You can use following command to get the snmpd status:

	[Trusty@XXXyyy ~]$ snmpwalk -c public -v 2c 10.0.0.1:161