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)