Tuesday, April 26, 2011

Tech Tips 'Linux Journal'

Feb 01, 2011  By Staff

I use this simple script when troubleshooting network problems on machines when I can't see the screen—for example, when I'm under a desk, wiggling Ethernet cables to find a bad one. When I hear the pings, I know it's fixed. Or, you can use this to drive your coworkers nuts by running it on their machines and sending single pings at random times during the day (or perhaps substitute moo for ping).
I made this into a script because I can't remember that big long line, and I would hate to type it in a lot. Here's sonar.sh:
#!/bin/bash
#
Written by Mike Studer a long time ago #
#
Make sure you obtain a nice submarine ping sound.
# ie., ping with an echo (sonar.au used here)
== "ICMP_Echo"
/usr/sbin/icmpinfo -vv | \ /usr/bin/nawk '$4 {print $0;
system("/usr/bin/aplay -q ~/sounds/sonar.au")}'

You need to install icmpinfo and aplay to use this.
Usage: Run this on the machine on which you want to make noise (test):
sudo sonar.sh

Run this on a machine that is trying to get to the test machine for a nonstop ping barrage:
ping {testmachine}

For a single ping, run this:
ping -c 1 {testmachine}

—Mike Studer
Get Even More from Less
In addition to viewing text, the less command can be used for viewing nontext files. This is done by using less' ability to invoke a preprocessor for input files. These preprocessors then can change the way the file's contents are displayed. For example, suppose you had a script lesspipe.sh:
#! /bin/sh
case "$1" in
*.tar.gz) tar -tzvf $1 2>/dev/null
;;
esac

Make sure the script is executable, and set the LESSOPEN environment variable to:
LESSOPEN='|/path/to/lesspipe.sh %s'

Now you can use less to view the contents of .tar.gz files:
$ less autocorrect.tar.gz
-rwxrwxrwx raogr/raogr 84149 2009-02-02 03:20 autocorrect.dat
-rwxrwxrwx raogr/raogr 443 2009-02-02 03:21 generator.rb
im
-rwxrwxrwx raogr/raogr 181712 2009-02-02 03:21 autocorrect. v

More-sophisticated versions of lesspipe.sh are available. You already may have a version installed, or you may have the lessopen.sh script installed. If not, search the Internet for lesspipe.sh. With the more-sophisticated versions, you can do things like this:
$ less knoppix_5.1.1.iso
CD-ROM is in ISO 9660 format
System id: LINUX
X Volume set id: P
Volume id: KNOPP Iublisher id: KNOPPER.NET ...
.inf /au
/KNOPPIX /autorun.bat /autoru ntorun.pif /boot /cdrom.ico
/KNOPPIX/K
/index.html /KNOPPIX/KNOPPI
XNOPPIX-FAQ-EN.txt

—Gururaj Rao
Keep Laptop Temperature under Control
I work all the time with a laptop, and as you all know, from time to time laptops can get hot. When you're actually using it as a “lap”-top, or when you're close enough to hear the fans, you know when it's heating up. But, when the conditions are such that you don't realize it's heating up, your laptop can get pretty hot. And, you've all heard the stories about laptops catching fire.
The following script monitors the temperature and slows down your system when it gets too hot. The script should be run as root from cron every minute or so. You need to install cpufrequtils to get it to work:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/sbin:/usr/local/bin:
# Get the temp of the core 0
$4'} | head -n 1` # Get the temp of the core 1
core_O=`acpi -t | awk {'print core_1=`acpi -t | awk {'print $4'} | tail -n 1`
e=0; $core_O/1.0" | bc) # R
# Round the result of core_O convert_O=$(echo "sca lound the result of core_1 convert_1=$(echo "scale=0; $core_1/1.0" | bc)
the CPU frequency can # be increased a
# Set maximum permissible temperature. max=90 # Set temperature at which gain (if needed). min=68 if (( $convert_O >= $max )) ; then # Too hot, slow down to 800MHz.
o high, set frequency
cpufreq-set -f 800 echo "CPU temp higher than desired!!!" | \ mail -s "CPU temp t oto half" root elif (($convert_O <= $min)) ; then # Cooled down, allow frequency to increase again if needed.
cpufreq-set -g ondemand
fi

As you can see, in the script, I actually use the temperature only of core 0, because I know that this core tends to overheat before core 1.

No comments: