bash function for rpm whatprovides
Sometimes some simple one-liner function can save you a lot of time, like-
wps ()
{
    rpm -q --whatprovides $(which $1 )
}   # ----------  end of function wps  ----------
        
    
Sometimes some simple one-liner function can save you a lot of time, like-
wps ()
{
    rpm -q --whatprovides $(which $1 )
}   # ----------  end of function wps  ----------
        
    
Lot of times, I want to find the directories with maximum number of files and so I wrote this quick function to do exactly the same
function count_lines ()
{
    oldIFS=$IFS
    count=0
    IFS=$'\n'
    dir=${1:-.}
    cd $dir
    find . -type d |while read line
    do
        echo -n "$(find $line -type f |wc -l) $line"
        echo 
        printf "Directories :: %8d\r" $count >&2
        ((count++))
    done|sort -n
    IFS=$oldIFS
}   # ----------  end of function count_lines  ----------
        
    
When moving large files/directories, I would like to see the progress.
Idea for this is to use rsync with progress and remove source files. But that option does not remove the empty directories left behind so find command to delete that.
So, here is function for that:
mv-progress () 
{ 
    rsync -ah --progress --remove-source-files "$1" "$2";
    find "$1" -empty -delete
}
        
    
I find myself doing this lot of times so thought will share this with you all. Basically, once I want to clear out the directory, I first want to find out the sub-directory using the maximum disk space so I wrote a function for that and here it is:
disk_usage_dirs () 
{ 
    find . -maxdepth 1 -type d -not -name '.' | while read line; do
        du -s "$line";
    done | sort -n | tail -${1:-5}
}
Some other posts you might find useful on this :
Continue readingIf you have no other option but to use telnet with authentication to send mail 🙂
( echo "ehlo" sleep 1 auth login sleep 1 $(echo username |base64) sleep 1 $(echo password |base64) sleep 1 mail from: from-address sleep 1 rcpt to: recepient sleep 1 data sleep 1 subject: test test mail . exit ) |telnet server port
I find myself doing google everytime I want to search for port number mapping. So, here is a short script to do just that 🙂
#!/bin/bash -
#===============================================================================
#
# FILE: portfind.sh
#
# USAGE: ./portfind.sh
#
# DESCRIPTION:
#
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Amit Agarwal (aka),
# ORGANIZATION:
# CREATED: 08/29/2017 19:00
# Last modified: Tue Aug 29, 2017 07:00PM
# REVISION: ---
#===============================================================================
set -o nounset # Treat unset variables as an error
#This is the directory where you have mappings file downloaded
ODIR=/root
ofile=$ODIR/service-names-port-numbers.xml
if [[ ! -f "$ofile" ]]
then
wget http://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xml -O "$ofile"
fi
which xmlstarlet >/dev/null 2>&1
if [[ $? == 0 ]]
then
echo "xmlstarlet is installed"
else
apt-get install xmlstarlet
fi
#### xmlstarlet el -u service-names-port-numbers.xml
## registry/record - protocol and number
proto=${2:-tcp}
port=${1:-21}
(echo '';sed '1,4d' $ofile) |xmlstarlet sel -t -m "//record[protocol='$proto'][number=$port]" -o "Number(Protocol): " -v number -o '(' -v protocol -o ')' -n -o "Description :" -v description -n
        
    
How many times you have felt that there was some simple way to convert bash ansi escape sequences ( colors as well in terminal ) to html equivalent so that you can send the same as html report in email. Here is simple solution. One way is to use ccze if you are using this for logs – colorize your logs and for more generic solution.
dnf install python3-ansi2html.noarch
after this is installed, you can use something like this:
Continue reading