All,
I don't know if this quirk is peculiar to Solaris or is the same on other flavours of UNIX, but if you are not the root user and you run the ifconfig(1m) command it does not show the MAC address assigned to the interfaces. Here is what I see in Xymon's client data view for one host:
[ifconfig]
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 10.5.2.46 netmask ffffffe0 broadcast 10.5.2.63
If I login as root and run the command I see:
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000
ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 10.5.2.46 netmask ffffffe0 broadcast 10.5.2.63
ether 0:3:ba:96:e6:4f
I am currently writing a script to retrieve information from the stored client data and to populate a database with that info. In this manner when I install Xymon on a new server the configuration information is automatically updated in my server database. The question is: How can I get the MAC address? By default the Xymon client is installed and run under the hobbit user ID. Is there any way I can configure the hobbitclient-sunos.sh script to run as root? I guess I could run the ifconfig command using sudo and configure sudo so that it doesn't require a password, but is there any other/better/easier/more elegant ways of doing this?
|\/|artin
--
Martin Ward
Manager, Technical Services
DDI:+44 (0) 20 7863 5218 / Fax: +44 (0)20 7863 9999 / www.colt.net <http://www.colt.net/>
Colt Technology Services, Unit 12, Powergate Business Park, Volt Avenue, Park Royal, London, NW10 6PW, UK.
Help reduce your carbon footprint | Think before you print. Registered in England and Wales, registered number 02452736, VAT number GB 645 4205 50
[Colt Disclaimer] The message is intended for the named addressee only and may not be disclosed to or used by anyone else, nor may it be copied in any way. The contents of this message and its attachments are confidential and may also be subject to legal privilege. If you are not the named addressee and/or have received this message in error, please advise us by e-mailing abuse at colt.net and delete the message and any attachments without retaining any copies. Internet communications are not secure and Colt does not accept responsibility for this message, its contents nor responsibility for any viruses. No contracts can be created or varied on behalf of Colt Technology Services, its subsidiaries, group companies or affiliates ("Colt") and any other party by email communications unless expressly agreed in writing with such other party. Please note that incoming emails will be automatically scanned to eliminate potential viruses and unsolicited promotional emails. For more information refer to www.colt.net or contact us on +44(0)20 7390 3900
Hi Martin
I believe this to be a Solaris feature. And looks like it is also the case on others. See here http://www.coffer.com/mac_info/locate-unix.html
And yes, I think sudo is the simplest way of getting round it. However, if you have conscientious objections to using root and/or sudo, you could try messing about with the output of arp -a. A bit of creative scripting, and you should get something you could tack onto the output of ifconfig -a. YMMV.
Cheers Vernon
On Thu, Jul 22, 2010 at 12:10 AM, Ward, Martin <Martin.Ward at colt.net> wrote:
All,
I don't know if this quirk is peculiar to Solaris or is the same on other flavours of UNIX, but if you are not the root user and you run the ifconfig(1m) command it does not show the MAC address assigned to the interfaces. Here is what I see in Xymon's client data view for one host:
[ifconfig]
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 10.5.2.46 netmask ffffffe0 broadcast 10.5.2.63If I login as root and run the command I see:
lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1
inet 127.0.0.1 netmask ff000000ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2
inet 10.5.2.46 netmask ffffffe0 broadcast 10.5.2.63 ether 0:3:ba:96:e6:4fI am currently writing a script to retrieve information from the stored client data and to populate a database with that info. In this manner when I install Xymon on a new server the configuration information is automatically updated in my server database. The question is: How can I get the MAC address? By default the Xymon client is installed and run under the hobbit user ID. Is there any way I can configure the hobbitclient-sunos.sh script to run as root? I guess I could run the ifconfig command using sudo and configure sudo so that it doesn't require a password, but is there any other/better/easier/more elegant ways of doing this?
|\/|artin
--
[image: Colt email signature FINAL]
Martin Ward
*Manager, Technical Services*
DDI:+44 (0) 20 7863 5218 / Fax: +44 (0)20 7863 9999 / www.colt.net
Colt Technology Services, Unit 12, Powergate Business Park, Volt Avenue, Park Royal, London, NW10 6PW, UK.
Help reduce your carbon footprint | Think before you print. Registered in England and Wales, registered number 02452736, VAT number GB 645 4205 50
[Colt Disclaimer] The message is intended for the named addressee only and may not be disclosed to or used by anyone else, nor may it be copied in any way. The contents of this message and its attachments are confidential and may also be subject to legal privilege. If you are not the named addressee and/or have received this message in error, please advise us by e-mailing abuse at colt.net and delete the message and any attachments without retaining any copies. Internet communications are not secure and Colt does not accept responsibility for this message, its contents nor responsibility for any viruses. No contracts can be created or varied on behalf of Colt Technology Services, its subsidiaries, group companies or affiliates ("Colt") and any other party by email communications unless expressly agreed in writing with such other party. Please note that incoming emails will be automatically scanned to eliminate potential viruses and unsolicited promotional emails. For more information refer to www.colt.net or contact us on +44(0)20 7390 3900
Thanks gents for your replies and directions. I decided to use arp(1m) rather than sudo to avoid having to mangle the sudoers file.
So for anyone else that needs to implement the same solution, below is the three-step solution. I followed the Xymon standard of using an environment variable to re-point the ifconfig(1m) command elsewhere. Could we get this change to the ifconfig command use put in to the next version?
Step 1:
I modified the ~xymon/client/bin/hobbitclient-sunos.sh file and changed: echo "[ifconfig]" ifconfig -a
to be: echo "[ifconfig]" $IFCONFIG -a
Step 2:
I modified the ~xymon/client/etc/hobbitclient.cfg, appending the following to the bottom: IFCONFIG="/opt/hobbit/client/ext/ifconfig.pl"
Step 3:
I created the file ~xymon/client/ext/ifconfig.pl. This script uses arp to get the MAC address and prints it out in a similar format to the real ifconfig command and the source is at the bottom of this email.
The only difference between this and the output of "ifconfig -a" is that Solaris does not put leading zeroes in to the MAC address whereas arp(1m) does:
arp -> 00:08:7c:bb:04:c0 ifconfig -> 0:8:7c:bb:4:c0
I left the code out to remove leading zeroes for the sake of speed. I will add it in later so if you want this functionality email me, or feel free to hack the code yourself.
Here is the source code:
#!/usr/bin/perl -w
A perl script that emulates the "ifconfig" output but puts the MAC
address in the right place if the executing user is not root.
v1.0 - Author: |\/|artin (martin.ward at colt.net)
On Solaris servers you only see the MAC address in the ifconfig -a
output if you are root. This script emulates that by using the output
from arp -an.
my $IFCONFIG='/sbin/ifconfig'; my $ARP='/usr/sbin/arp';
my ($iface, $curriface, $inet, $ipaddr, $arpip, $mac);
Check if we are root.
if ($> == 0) { # Simmply execute ifconfig with the command line parameters exec $IFCONFIG, @ARGV; }
The user is not root, so run IFCONFIG but catch the output
open(IFC, "$IFCONFIG @ARGV |") or die "Unable to run $IFCONFIG:". $!;
Output from ifconfig looks like this:
ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index
2
inet 10.5.2.46 netmask ffffffe0 broadcast 10.5.2.63
$curriface = '';
while (<IFC>) { # First print the current line out though. print $_;
chomp;
($iface, $ipaddr, undef) = split/ +/, $_, 3;
if ($iface =~ /\tinet/) {
# We have an IP address so use it to get the MAC address
open(ARP, "$ARP -an |") or die "Unable to run arp:" .
$!; while(<ARP>) { chomp; (undef, $arpip, undef, undef, $mac) = split; print "\tether $mac\n" if ($arpip eq $ipaddr); } close(ARP); } } close(IFC);
|\/|artin
Martin Ward Manager, Technical Services
DDI:+44 (0) 20 7863 5218 / Fax: +44 (0)20 7863 9999 / www.colt.net Colt Technology Services, Unit 12, Powergate Business Park, Volt Avenue, Park Royal, London, NW10 6PW, UK.
Help reduce your carbon footprint | Think before you print. Registered in England and Wales, registered number 02452736, VAT number GB 645 4205 50
-----Original Message----- From: Tim McCloskey [mailto:tm at freedom.com] Sent: 22 July 2010 04:34 To: xymon at xymon.com Subject: RE: [xymon] MAC address in the client data?
From a Solaris 10 ifconfig man page:
ether [ address ] If no address is given and the user is root or has suf- ficient privileges to open the underlying device, then display the current Ethernet address information.
Vernon is right, arp is probably your friend here. There are other ways of doing this, arp being one of them. If it were me, I would not want to run sudo or change anything to run as root when the same information is already available to the hobbit user. For displaying information, arp will work in child zones as well.
Certainly you would do something a bit more sane than the following, laziness provides the following example, there are better ways to do this:
for ip in
ifconfig -a | gegrep -A1 "bge0: " | tail -1 | awk '{print $2}'; do arp -na | grep $ip | awk '{print $NF}'; donesome:mac:addres:displayed:here
Regards,
From: Vernon Everett [everett.vernon at gmail.com] Sent: Wednesday, July 21, 2010 8:00 PM To: xymon at xymon.com Subject: Re: [xymon] MAC address in the client data?
Hi Martin
I believe this to be a Solaris feature. And looks like it is also the case on others. See here http://www.coffer.com/mac_info/locate-unix.html
And yes, I think sudo is the simplest way of getting round it. However, if you have conscientious objections to using root and/or sudo, you could try messing about with the output of arp -a. A bit of creative scripting, and you should get something you could tack onto the output of ifconfig -a. YMMV.
Cheers Vernon
On Thu, Jul 22, 2010 at 12:10 AM, Ward, Martin <Martin.Ward at colt.net<mailto:Martin.Ward at colt.net>> wrote: All,
I don't know if this quirk is peculiar to Solaris or is the same on other flavours of UNIX, but if you are not the root user and you run the ifconfig(1m) command it does not show the MAC address assigned to the interfaces. Here is what I see in Xymon's client data view for one host:
[ifconfig] lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 10.5.2.46 netmask ffffffe0 broadcast 10.5.2.63
If I login as root and run the command I see: lo0: flags=2001000849<UP,LOOPBACK,RUNNING,MULTICAST,IPv4,VIRTUAL> mtu 8232 index 1 inet 127.0.0.1 netmask ff000000 ce0: flags=1000843<UP,BROADCAST,RUNNING,MULTICAST,IPv4> mtu 1500 index 2 inet 10.5.2.46 netmask ffffffe0 broadcast 10.5.2.63 ether 0:3:ba:96:e6:4f
I am currently writing a script to retrieve information from the stored client data and to populate a database with that info. In this manner when I install Xymon on a new server the configuration information is automatically updated in my server database. The question is: How can I get the MAC address? By default the Xymon client is installed and run under the hobbit user ID. Is there any way I can configure the hobbitclient-sunos.sh script to run as root? I guess I could run the ifconfig command using sudo and configure sudo so that it doesn't require a password, but is there any other/better/easier/more elegant ways of doing this?
|\/|artin
[cid:image001.jpg at 01CB28F6.36AD1610] Martin Ward Manager, Technical Services
DDI:+44 (0) 20 7863 5218 / Fax: +44 (0)20 7863 9999 / www.colt.net<http://www.colt.net/> Colt Technology Services, Unit 12, Powergate Business Park, Volt Avenue, Park Royal, London, NW10 6PW, UK.
Help reduce your carbon footprint | Think before you print. Registered in England and Wales, registered number 02452736, VAT number GB 645 4205 50
[Colt Disclaimer] The message is intended for the named addressee only and may not be disclosed to or used by anyone else, nor may it be copied in any way. The contents of this message and its attachments are confidential and may also be subject to legal privilege. If you are not the named addressee and/or have received this message in error, please advise us by e-mailing abuse at colt.net<mailto:abuse at colt.net> and delete the message and any attachments without retaining any copies. Internet communications are not secure and Colt does not accept responsibility for this message, its contents nor responsibility for any viruses. No contracts can be created or varied on behalf of Colt Technology Services, its subsidiaries, group companies or affiliates ("Colt") and any other party by email communications unless expressly agreed in writing with such other party. Please note that incoming emails will be automatically scanned to eliminate potential viruses and unsolicited promotional emails. For more information refer to www.colt.net<http://www.colt.net> or contact us on +44(0)20 7390 3900
participants (3)
-
everett.vernon@gmail.com
-
Martin.Ward@colt.net
-
tm@freedom.com