<html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"> <title>snmp_agent_uptime</title> </head> <body> <h1>snmp_agent_uptime</h1> <h2>Quick instructions</h2> <p> Set up three virtual computers, SimpleArbiter with the disk image simpleArbiterDhcp, SNMPServer and SNMPClient. Write a program called upminutes. This program should output the uptime of the computer in minutes. Set it up on SNMPClient in the home directory of the user test with the password test. </p> <p> Make sure that the SNMP server reports it's uptime in seconds over SNMP under NET-SNMP-EXTEND-MIB::nsExtendOutput2Table. </p> <p> Write a script called beri.sh that reads the value from the OID 1.3.6.1.4.1.8072.1.3.2.4.1.2 on SNMPServer. Set it up on SNMPClient in the home directory of the user test. </p> <h2>Instructions</h2> <h3>Set up of VM VirtualBox</h3> <ol> <li> Download the following virtual images (*.vid) from the directory with images of virtual computers: <ol type="disc"> <li> simpleArbiterDhcp.vdi </li> <li> some-bash-console.vdi – twice, one for SNMPServer and second for SNMPClient </li> </ol> </li> <li> VM VirtualBox WARNING! If you want to use one same virtual image (some-bash-console.vdi) for two virtual computers (SNMPServer and SNMPClient), you must <strong>change UUID</strong> of one image. <ol type="disc"> <li> Use this command <i>vboxmanage internalcommands sethduuid name-of-disk.vdi</i> to change UUID (<a href="http://www.giannistsakiris.com/2009/05/06/virtualbox-how-to-change-the-uuid-of-virtual-disk-vdi/">hint</a>). </li> </ol> </li> <li> Final view of sets VM VirtualBox machines.<br> <img src="../images/01.png" alt="VM VirtualBox machines" width="800"> </li> </ol> <h3>Set up of SNMPServer machine</h3> <ol> <li> setup network as “Bridged Adapter” -> Machine-> Settings ->Network Install snmpd and snmp packages and tools for inspecting the data available over SNMP. <ol type="disc"> <li> command <i>apt-get install snmpd snmp snmp-mibs-downloader</i> </li> </ol> <li> RECOMMENDATION! Before doing any changes to your /etc/snmp/snmpd.conf file take a copy of original file. <ol type="disc"> <li> command <i>cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig</i> </li> </ol> </li> <li> Set up the snmp server to allow all other computers to access it = edit snmpd.conf file. <ol type="disc"> <li> command <i>nano /etc/snmp/snmpd.conf</i> (you can use different editor) </li> <li> Check this 4 rows and make sure they look like this:<br> <i># Listen for connections from the local system only<br> # agentAddress udp:127.0.0.1:161<br> # Listen for connections on all interfaces (both IPv4 *and* IPv6)<br> agentAddress udp:161,udp6:[::1]:161</i> </li> </ol> </li> <li> Add a group (community) of computers we deem to be worthy of accessing all data. This group will be called students = again edit snmpd.conf file. <ol type="disc"> <li> rocommunity students 0.0.0.0/0 </li> <li> change 0.0.0.0./0 into correct address <i>ifconfig -a</i> </li> </ol> </li> <li> OPTIONAL CONFIGURATION. Lower in the same file you can set the location of the computer snmpd is running on and the name of the administrator. <ol type="disc"> <li> find under # SYSTEM INFORMATION </li> </ol> </li> <li> Make sure that the SNMP server reports it's uptime in seconds over SNMP under NET-SNMP-EXTEND-MIB::nsExtendOutput2Table. <ol type="disc"> <li> create script upseconds containing this and save it where you want:<br> <i>#!/bin/bash<br> uptime=$(</proc/uptime)<br> seconds=${uptime%%.*}<br> echo $seconds<br> exit 0</i> </li> <li> don't forget to make the script runnable:<br> command <i>chmod +x /your_path_to_script/upseconds</i> </li> <li> Then edit file <i>snmpd.conf</i> and under # EXTENDING THE AGENT comment all three tests and add your line of your code with upsecond script. It will look like this:<br> <i># extend test1 /bin/echo Hello, world!<br> # extend-sh test2 echo Hello, world! ; echo Hi there ; exit 35<br> # extend-sh test3 /bin/sh /tmp/shtest<br> extend-sh "your_name" "your_path_to_script_upseconds" </i> </li> </ol> </li> <li> You need to restart the snmp services. <ol type="disc"> <li> command <i>/etc/init.d/snmpd restart</i> </li> </ol> </li> <li> You can test your configuration through localhost. <ol type="disc"> <li> command <i>snmpwalk localhost -c public -v1</i> </li> </ol> </li> <li> Also test the correct return of server's uptime in seconds SNMP under NET-SNMP-EXTEND-MIB::nsExtendOutput2Table. <ol type="disc"> <li> command <i>snmpwalk -c students -v1 IPaddressOfServer 1.3.6.1.4.1.8072.1.3.2.4.1.2</i> </li> </ol> </li> </ol> <h3>Set up of SNMPClient machine</h3> <ol> <li> Install snmpd and snmp packages. <ol type="disc"> <li> command <i>apt-get install snmpd snmp</i> </li> </ol> <li> RECOMMENDATION! Before doing any changes to your /etc/snmp/snmpd.conf file take a copy of original file. <ol type="disc"> <li> command <i>cp /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.orig</i> </li> </ol> </li> <li> Set up the snmp client to allow all other computers to access it = edit snmpd.conf file. <ol type="disc"> <li> command <i>nano /etc/snmp/snmpd.conf</i> (you can use different editor) </li> <li> (un)comment these four lines as below:<br> <i># Listen for connections from the local system only<br> # agentAddress udp:127.0.0.1:161<br> # Listen for connections on all interfaces (both IPv4 *and* IPv6)<br> agentAddress udp:161,udp6:[::1]:161</i> </li> </ol> </li> <li> Add a group (community) of computers we deem to be worthy of accessing all data. This group will be called students = again edit snmpd.conf file. <ol type="disc"> <li> rocommunity students 0.0.0.0/0 </li> <li> write correct network address = command <i>ifconfig -a</i> </li> </ol> </li> <li> OPTIONAL CONFIGURATION. Lower in the same file you can set the location of the computer snmpd is running on and the name of the administrator. <ol type="disc"> <li> find under # SYSTEM INFORMATION </li> </ol> </li> <li> You need to restart the snmp services. <ol type="disc"> <li> command <i>/etc/init.d/snmpd restart</i> </li> </ol> </li> <li> You can test your configuration through localhost. <ol type="disc"> <li> command <i>snmpwalk localhost -c public -v1</i> </li> </ol> </li> <li>Create the user <i>test</i> with password <i>test</i> <ol type="disc"> <li> command <i>adduser test</i> </li> </ol> </li> <li>Login as user <i>test</i> and create program <i>upminutes</i> in the home directory. This program should output the uptime of the computer in minutes. <ol type="disc"> <li> command <i>nano upminutes</i> (you can use different editor) </li> <li> add the source code:<br> <i>#!/bin/bash<br> uptime=$(</proc/uptime)<br> uptime=${uptime%%.*}<br> minutes=$(( uptime / 60 ))<br> echo $minutes<br> exit 0</i> </li> <li> don't forget to make the program runnable:<br> command <i>chmod +x /home/test/upminutes</i> </li> <li> test the program (it should output the uptime of the computer in minutes)<br> command <i>/home/test/upminutes</i> </li> </ol> </li> <li><strong> As user <i>test</i> and create next script called <i>beri.sh</i> that reads the value from the OID 1.3.6.1.4.1.8072.1.3.2.4.1.2. on SNMPServer. Set it up on SNMPClient in the home directory of the user test. <ol type="disc"> <li> command <i>nano beri.sh</i> (you can use different editor) </li> <li> add the source code:<br> <i>#!/bin/bash<br> snmpwalk -c students -v1 IPServerAddress 1.3.6.1.4.1.8072.1.3.2.4.1.2<br> exit 0</i> </li> <li> don't forget to make the program runnable:<br> command <i>chmod +x /home/test/upminutes</i> you can test it with <i>./beri.sh</i> </li> </ol> </li> </ol> <h3> Setting SimpleArbiter </h3> User: tester Password: test apt-get install libsnmp-python </body> </html>