shell command to find the number of collisions of NICs
Linux - NewbieThis Linux forum is for members that are new to Linux.
Just starting out and have a question?
If it is not in the man pages or the how-to's this is the place!
Notices
Welcome to LinuxQuestions.org, a friendly and active Linux Community.
You are currently viewing LQ as a guest. By joining our community you will have the ability to post topics, receive our newsletter, use the advanced search, subscribe to threads and access many other special features. Registration is quick, simple and absolutely free. Join our community today!
Note that registered members see fewer ads, and ContentLink is completely disabled once you log in.
If you have any problems with the registration process or your account login, please contact us. If you need to reset your password, click here.
Having a problem logging in? Please visit this page to clear all LQ-related cookies.
Get a virtual cloud desktop with the Linux distro that you want in less than five minutes with Shells! With over 10 pre-installed distros to choose from, the worry-free installation life is here! Whether you are a digital nomad or just looking for flexibility, Shells can put your Linux machine on the device that you want to use.
Exclusive for LQ members, get up to 45% off per month. Click here for more info.
But, I need to know the total number of collisions of all the NICs. ...
How many NIC's do you have?
Quote:
Originally Posted by RajRed
... Can it be done in the command line or it needs the script to do it?
Do you have a preference? Theoretically, anything you can do in a script, can do on the CLI. It's just not convenient.
Are you looking for a command/script that will take a list interfaces (NIC's), find their collision counts, add up those counts, & output that sum? And do you want verbiage, like "Total collisions for interfaces eth0 & eth1 = nnn"?
Good. Unless the NIC's are consecutively #'d, you will need to supply a list of their names rather than a count; the list could be permanent. Perhaps a little more background on what you will be doing, especially how it might change from 1 use to the next.
Now for the big Q: how good are you at bash scripting & how much help do need in writing it?
You don't mention which RedHat are you using, but the code bellow is good for FC5. I think it will work in any kernel 2.6, because it depends on /sys interface only.
Code:
for device in $(\ls /sys/class/net); do
echo -n "${device}: ";
cat /sys/class/net/${device}/statistics/collisions;
echo;
done
Using /sys/class/net/${device}/statistics/collisions is a vast improvement over my technique. Tip of the hat to marozsas.
You can still change the source of the iterated values for ${device} from $(\ls /sys/class/net), which will list all interfaces, to a list of the NIC's only -- if you want to.
You could also pipe the output through awk to format it in columns. Depends on how pretty you want it.
LinuxQuestions.org is looking for people interested in writing
Editorials, Articles, Reviews, and more. If you'd like to contribute
content, let us know.