Bash
от ILuxWiki
Съдържание |
Хитрини
Изрязване на името на файл от пълния път
$ FULLPATH='/usr/local/etc/rc.d/runme.sh'
$ basename ${FULLPATH}
runme.sh
--Sysop 11:24, 22 фев 2006 (EET)
Изрязване само на директориите от пълния път
$ FULLPATH='/usr/local/etc/rc.d/runme.sh'
$ echo ${FULLPATH%/*}
/usr/local/etc/rc.d
--Sysop 11:24, 22 фев 2006 (EET)
Скриптове
Скрипт за предоставяне достъп до машини зад NAT
#!/bin/bash # opengate.ssh script # redirect ports for NAT-ed hosts /bin/ping -i 30 linuxfan.org 1> /dev/null 2> /dev/null & while (true) do /usr/bin/ssh -n -N -R 2222:127.0.0.1:22 -R 2223:127.0.0.1:10001 remote_shell@linuxfan.org logger $0 disconneted! sleep 30 done
--Sysop 11:24, 22 фев 2006 (EET)
Скрипт за фонетична кирилизация на Х (и за махане на Caps Lock)
#!/bin/bash
# a script to setup your language in x window
# setup the locale
unset lc_all
lang=bg_bg
language=bg:en_uk
export lang language
# setup the keyboard
setxkbmap -types complete -compat 'complete+leds(scroll)' -geometry 'pc(pc102)' \
-symbols \
'en_us(pc101)+bg(phonetic_enhanced)+group(alt_shift_toggle)+group(rwin_switch)+level3(menu_switch)'
# nls for old motif applications
if test -d /usr/x11r6/lib/x11/nls; then
xnlspath=/usr/x11r6/lib/x11/nls
export xnlspath
fi
# add custom user fonts path
if [ -f ${home}/.fonts/fonts.dir ]; then
xset fp+ ${home}/.fonts
fi
# add system-wide fonts path for cyrfonts (this is not for debian)
if [ -f /opt/cyrfonts/fonts.dir ]; then
xset fp+ /opt/cyrfonts
fi
# read the user resources database
if test -f ~/.xresources; then
xrdb -merge ~/.xresources
fi
# disable caps-lock. evil key :-)
xmodmap -e "remove Lock = Caps_Lock"
--Electricelf 16:05, 23 май 2005 (EET)
Скрипт за смяна на default gateway
#!/bin/sh
# stupid script to change default gateway
# author t0d0r at linuxfan dot org
# vim:ts=4:sw=4:
primary_gateway='217.79.66.2'
secondary_gateway='10.210.0.1'
ping_cmd='/sbin/ping'
change_to() {
/sbin/route delete default
/sbin/route add default $1
}
current_gateway=`/usr/bin/netstat -rn | /usr/bin/grep default | /usr/bin/awk '{print $2}'`
${ping_cmd} -c 3 ${current_gateway} 2>&1 > /dev/null && is_ok=true
if [ "x_${current_gateway}" = "x_${primary_gateway}" ]; then
if [ "x${is_ok}" = "xtrue" ]; then
exit;
else
${ping_cmd} -c 3 ${secondary_gateway} 2>&1 > /dev/null \
&& change_to ${secondary_gateway}
exit;
fi
else
${ping_cmd} -c 3 ${primary_gateway} 2>&1 > /dev/null \
&& change_to ${primary_gateway}
exit;
fi
--Sysop 10:16, 17 май 2005 (EET)
Скрипт за проверка на сигнал до клиент
#!/usr/local/bin/bash
#Script for test connection from gateway to client
#Author: Peter Petrov aka peterpet
OS_TYPE=`uname`
PW=( 64 1024 1400 19000 25100 )
ping_l=`which ping`
if [ "x$1" = "x" ]; then
echo "Използване: ./vrazka <IP adress>"
exit 1
fi
if [ "$OS_TYPE" = "Linux" ]
then
echo "Работим на Linux"
echo
echo ".........ЗАПОЧВАМЕ ТЕСТ НА ВРЪЗКАТА ЗА ЗАГУБИ ...."
echo
echo
for i in ${PW[@]}
do
iz=`${ping_l} -c 10 -s $i $1 | grep loss | awk '{print $6}'`
echo ""
if [ "$iz" = "100%" ];
then
echo "КЛИЕНТА ИМА FIREWALL"
echo "или му е изключен кабела"
exit
fi
echo "Натоварване на "$1" с пакет "$i" e: "$iz" "
done
fi
if [ "$OS_TYPE" = "FreeBSD" ]
then
echo "Работим на FreeBSD"
INTERFACE=`route get $1 | grep interface | awk '{print $2}'`
echo "$INTERFACE"
sudo /usr/local/sbin/arping -c 3 -i "$INTERFACE" "$1"
echo
echo ".........ЗАПОЧВАМЕ ТЕСТ НА ВРЪЗКАТА ЗА ЗАГУБИ ...."
echo
echo
for i in ${PW[@]}
do
iz=`sudo ${ping_l} -c 10 -s $i $1 | grep loss | awk '{print $7}'`
echo ""
if [ "$iz" = "100%" ];
then
echo "КЛИЕНТА ИМА FIREWALL"
echo "или му е изключен кабела"
exit
fi
echo "Натоварване на "$1" с пакет "$i" e: "$iz" "
done
fi
echo ""
echo ""
echo "########################### КРАЙ НА ПРОВЕРКАТА ########################"
exit
--peterpet 13:46, 31 август 2007 (EET)
Скрипт за differential backup
#!/bin/bash
# backup script by todor.dragnev at gmail.com
# useful for daily backup of AWS instances
prefix=/vol/backup/instances/`hostname`
exclude_file="$prefix/rsync.exclude"
compare_dest=${prefix}/`date +"%Y-%m-01"`/
source=/
target=$prefix/`date +"%Y-%m-%d"`/
# do differential backup
if [ -d $compare_dest ]; then
rsync -ab --compare-dest=${compare_dest} \
--exclude-from=${exclude_file} \
${source} ${target}
else
# do full
rsync -ab \
--exclude-from=${exclude_file} \
${source} ${compare_dest}
fi
--sysop 11:14, 12 октомври 2009 (UTC)

