Posts Tagged ‘Bash’
Probably it will be a good idea not to write every script from a blank page, because the most scripts at the beginning contains the same information. like “what this pease of code does”, “who wrote it and when”, “default options declarations” and etc.
In following template I’ll define the most popular parts that all good scripts should contain. Also I figured out that adding --debug option is a very usefull thing that allows you to deep dive throught the code without extra manipulations.
Simple, clean, usefull:
# Execution frequency:
# Author: Name e-mail DD/MM/YYYY
ARGS=`getopt -o h --long help,debug -- “$@“`
eval set -- “$ARGS“
while true ; do
case “$1” in
-h| --help) usage; exit 0;;
--debug) set -x; shift;;
--) shift ; break ;;
*) echo “Internal error!“; usage; exit 1;;
Assume we have a 1000 files and we need to process each of them in a some way. File processing takes at least a 15 minutes. So, to process them all consistently we need aproximately 10 days. If we suppose that we will process them on a computer with more then one core, it would be logical to run some processes in parallel. But if we would start them all at the same time – our computer is going to be dead.
The following shell code defines a number of a processes that should be run concurrently, and supported the same number of concurrently running processes until the last file would not be processed.
FILES_LIST=“1 2 3 4 5 6 7“
echo "Start processing file $1"
echo "File $1 is processed."
# Main loop
for i in $FILES_LIST; do
processing $i &
# Control of the concurrent processes
while [ `echo $pid_list|wc -w` -ge "$PROC_IN_PARALLEL" ] ; do
for pid in $pid_list ; do
if [ -d /proc/$pid ] ;then
Shell allow users to send udp or tcp messages to the remote host and to receive replies directly from the command line without any additional tools. It seems like a quite useful thing, but the functionality are limited to act only as a tcp/udp client, and not as a server.
The whole following code shows how to exploit this functionality. It should works properly in both major shell interpretors: Bash and Ksh.
exec 3<> /dev/tcp/$host_name/$port_number Read the rest of this entry »
echo -e "GET / HTTP/1.0\nHost: $host_name\n\n" >&3
while true ;do
read -r response <&3
if [ -z "$response" ];then