web analytics

AIX: reset user password

Change the password for the user (as root):

passwd username

Reset the login counter and unlock the user:

chsec -f /etc/security/lastlog -a "unsuccessful_login_count=0" -s username chuser "account_locked=false" username

Unix: print in color

This simple procedure takes 3 arguments as the parameters:

Text Foreground color Background color

It prints the text to the terminal in selected colors.

function print_color {  local text=$1  local fg=$2  local bg=$3  case "$fg" in  red) fg="31m" ;;  green) fg="32m" ;;  yellow) fg="33m" ;;  blue) fg="34m" ;;  white) fg="37m" ;;  black) fg="30m" ;;  *) […]

Unix: rename files to lowercase

It’s very simple to rename the files to lowercase/uppercase using awk:

Lowercase

ls -1rt | awk ‘{ printf("mv %s %s\n", $0, tolower($0)) | "sh" } END { close("sh") }’

Uppercase

ls -1rt | awk ‘{ printf("mv %s %s\n", $0, toupper($0)) | "sh" } END { close("sh") }’

Reading password in Unix shell

print -n "Enter Your password:" stty_orig=`stty -g` trap "stty ${stty_orig}; exit" 1 2 3 15 stty -echo >&- 2>&- read PASS stty ${stty_orig} >&- 2>&- trap 1 2 3 15 print

trap :catches interruptions. I.e. if the user presses Ctrl+C, the normal stty mode is set before stopping the program stty -echo :switches off the […]

Unix shell: workaround for loop problem

It’s not possible to get the value of the loop variables in some versions of ksh.

Example:

#!/bin/ksh num=0 cat $0 | while read line ; do  let num=num+1 done echo "Number=$num"

This script will return “Number=0” as the result on some Linux machines.

Here is the workaround for the problem: You should change the […]

Unix: get the file date

ls -1 | cpio -o | cpio -ivt | awk ‘{print $NF, $(NF-1), $(NF-4), $(NF-3) }’

Warning: I/O expensive for the large files!

Perl:

@a = localtime((stat($my_file))[9]); $a[4]++; printf "%02d%02d%02d",@a[5,4,3];

Redirect script output to the log

If the whole output of the complex script should be redirected to the log, the following trick could be used.

if [ "$1" != "-log" ] ; then                                      $0 -log "$@" 2>&1 | tee the_log_file.$$.log                  
   echo "The log file for the current session: the_log_file.$$.log"  
   exit 0                                                      
fi                                                            
shift  # remove "-log" parameter

grep in find command: how to display file names

Here is very simple trick to force the grep command to display file name, when it’s used together with find operation. Just write /dev/null as the “second file”

find . -type f -exec grep somestring {} /dev/null \;

Using pattern lists in Unix

Here is the small reminder about the syntax of the “case” command and the usage of the pattern lists.

#!/bin/ksh print -n "Please enter the line: " read line case "$line" in  ?(dog|cat)  ) print "zero or one occurrence of any pattern" ;;  *(low|high) ) print "zero or more occurrences of any pattern" ;;  @(duncan|methos) […]

Print the PATH directories in the readable format

echo $PATH| awk -v RS=":" ‘{ print $0 }’ echo $LD_LIBRARY_PATH |awk -v RS=":" ‘{ system ( "ls -rltd " $0 ) }’

Warning! As far as the option ‘-v’ is used, the new awk(nawk in some systems) should be used.

To check if the new version of awk is installed:

awk 1 /dev/null

The […]