Ciekawe i gotowe skrypty bash dla wszystkich!
Chciałbym przedstawić kilka ciekawych skryptów. Niektóre trzeba zmodyfikować do swoich potrzeb. Niektóre mogą być już Wam znane. Pozdrawiam
Zacznijmy od najłatwiejszych a więc:
- Aliasy - ułatwiajmy sobie pracę z apt-get:
Kod: Zaznacz cały
#!/bin/sh alias install='sudo apt-get install' alias search='sudo apt-cache search' alias upgrade='sudo apt-get upgrade' alias update='sudo apt-get update' alias ..='cd ..'
- Aktualizacja systemu jednym poleceniem:
Kod: Zaznacz cały
#!/bin/sh sudo apt-get autoclean sudo apt-get autoremove sudo apt-get update sudo apt-get dist-upgrade
- Skrypt, który automatycznie łączy się z aparatem zgrywając wszystkie NOWE zdjęcia i wrzuca je do podkatalogów, które nazywa według dat wyciągniętych z informacji exif zdjęcia.
Skrypt korzysta z paczek gphoto2 i exiv2.Pomijając fakt, że aparat musi posiadać funkcję oznaczania zdjęć, które są już zgrane to w moim przypadku rodzaj komunikacji w aparacie (Canon 300D) musi być ustawiony na NORMAL, a nie na PTP bo inaczej zgrywa wszytko jak leci.Kod: Zaznacz cały
#!/bin/bash # KONFIGURACJA SKRYPTU OPIERA SIE O 2 ZMIENNE #ROZSZERZENIE JAKIE APARAT NADAJE PLIKOM ext='JPG' #KATALOG GDZIE BEDA TWORZONE PODFOLDERY - katalog musi istniec w nim zostane utworzone poszczegole podkatalogi pre_DIR='/media/sciezka/dostepu/do/aparatu/twojego/' if [ ! -d "$pre_DIR" ] then echo 'KATALOG GLOWNY NIE ISTENIEJE' exit 0 fi echo 'Wykrywam aparat' gphoto2 --auto-detect echo 'Rozpoczynam zgrywanie nowych zdjec' gphoto2 --get-all-files --new for zdjecie in `ls *.$ext` do post_DIR=`exiv2 $zdjecie | grep timestamp | cut -c 19- | cut -c -10 | sed 's/:/-/g'` if [ ! -d "$pre_DIR$post_DIR" ] then echo "Tworze katalog $pre_DIR$post_DIR" mkdir "$pre_DIR$post_DIR" fi if [ ! -d "$pre_DIR$post_DIR" ] then echo "Katalog $pre_DIR$post_DIR nie zostal utworzony sprawdz przyczyne" else echo "Przenosze plik $zdjecie" mv $zdjecie "$pre_DIR$post_DIR" fi done
- Skrypt dla Nautiliusa sprawdzający CRC plików filmowych, które zawierają zakodowany CRC w swojej nazwie, np. "cos_tam_cd1[2c657f0a].avi":Skrypt na podstawie "Make md5" i "Check md5" ze strony.
Kod: Zaznacz cały
#!/bin/sh # Language settings Passed="OK" Failed="FAILED" PrintAllOk="All files are OK!" PrintFail1="file(s) are OK and" PrintFail2="file(s) are corrupt!" case $LANG in pl* ) Passed="OK" Failed="Błąd" PrintAllOk="Wszystkie pliki są OK!" PrintFail1="plik(i) jest/są OK i" PrintFail2="plik(i) jest/są uszkodzony/uszkodzone!" esac for File in "$@" do if [ ! -f "$File" ];then zenity --error --text="\"$File\" isn\'t processing..." exit fi CFVName="/tmp/cfv.sfv" echo "$File ${File :( ( ${#File} -13 )):8}" > "$CFVName" (cfv -rr -T -f "$CFVName" -t sfv "$@" > "/tmp/CRCcheck.txt") 2>&1 | zenity --progress --title "Check CRC" --text "Checking: $File" --pulsate --auto-close NumberOK=`cat /tmp/CRCcheck.txt | fgrep -o -e "$Passed" | wc -l` NumberFailed=`cat /tmp/CRCcheck.txt | fgrep -o -e "$Failed" | wc -l` if [ $NumberFailed == 0 ]; then StatusMessage="$PrintAllOk" else StatusMessage="$NumberOK $PrintFail1 $NumberFailed $PrintFail2" fi echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" >> /tmp/CRCcheck.txt cat /tmp/cfv.sfv >> /tmp/CRCcheck.txt echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" >> /tmp/CRCcheck.txt echo "$StatusMessage" >> /tmp/CRCcheck.txt zenity --text-info --title "$File" --width=640 --height=480 --filename=/tmp/CRCcheck.txt done
Potrzebuje do poprawnej pracy pakietów "Zenity" i "CFV" z repozytorium:
Nautilius Scripts
Skrypt dla Nutiliusa ułatwiający tworzenie sum kontrolnych plików i ich zapisu do SFV:Skrypt dla Nautiliusa do sprawdzania SFV na podstawie pliku "*.SFV":Kod: Zaznacz cały
#!/bin/sh for File in "$@" do if [ ! -f "$File" ];then zenity --error --text="\"$File\" isn\'t processing..." exit fi CFVName="${File::( ( ${#File} -4 ))}.sfv" #zenity --info --title="Checking SFV file name..." --text="# $CFVName #" cfv -rr -C -f "$CFVName" -t sfv "$@" | zenity --progress --title "Make SFV" --text "Making: $CFVName" --pulsate --auto-close done
Kod: Zaznacz cały
#!/bin/sh # Language settings Passed="OK" Failed="FAILED" PrintAllOk="All files are OK!" PrintFail1="file(s) are OK and" PrintFail2="file(s) are corrupt!" case $LANG in pl* ) Passed="OK" Failed="Błąd" PrintAllOk="Wszystkie pliki są OK!" PrintFail1="plik(i) jest/są OK i" PrintFail2="plik(i) jest/są uszkodzony/uszkodzone!" esac for File in "$@" do if [ ! -f "$File" ] || [ "${File :( ( ${#File} -4 ))}" != ".sfv" && ".SFV" ];then zenity --error --text="\"$File\" isn\'t SFV file..." exit fi (cfv -rr -T -f "$@" -t sfv > "/tmp/CRCcheck.txt") 2>&1 | zenity --progress --title "Check SFV" --text "Checking: $File" --pulsate --auto-close NumberOK=`cat /tmp/CRCcheck.txt | fgrep -o -e "$Passed" | wc -l` NumberFailed=`cat /tmp/CRCcheck.txt | fgrep -o -e "$Failed" | wc -l` if [ $NumberFailed == 0 ]; then StatusMessage="$PrintAllOk" else StatusMessage="$NumberOK $PrintFail1 $NumberFailed $PrintFail2" fi echo "-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-" >> /tmp/CRCcheck.txt echo "$StatusMessage" >> /tmp/CRCcheck.txt zenity --text-info --title "$File" --width=640 --height=240 --filename=/tmp/CRCcheck.txt done
- To się przyda komuś kto ma Neostradę przez ruter PENTAGRAM CERBERUS ADSL LITE.
Skrypt ma za zadanie bez wchodzenia do panelu administracyjnego rutera (przez www) wykonać połączenie, rozłączenie, rozłączenie i połączenie (reconnect) modemu ADSL.Kod: Zaznacz cały
#!/bin/bash GATEIP="ADRES IP ROUTERA" LINK="http://$GATEIP/doc/index.htm?WINDWEB_URL=/doc/ppp.htm&PPP_connection_number=1&New_PPP_Action=" USER="NAZWA ADMINISTRATORA" PASS="HAS£O ADMINISTRATORA" function connect(){ wget --quiet --http-user=$USER --http-password=$PASS ${LINK}0 -O /tmp/wget_router rm -f /tmp/wget_router } function disconnect(){ wget --quiet --http-user=$USER --http-password=$PASS ${LINK}1 -O /tmp/wget_router rm -f /tmp/wget_router } case $1 in 'connect'|'c') connect;; 'disconnect'|'d') disconnect;; 'reconnect'|'r') echo -n "wait..." disconnect && sleep 2 && connect echo "OK";; *) echo "$0 {connect|c|disconnect|d|reconnect|r}";; esac
- Nakładka graficzna na http://www.gaduradio.yoyo.pl, podstawą jej działania jest poprawność działania powyższego skryptu, konfiguracja opiera się na zdefiniowaniu początkowych zmiennych. Dla bezpieczeństwa polecam utworzyć sobie osobne konto gg gdyz hasła do konta w pliku nie są przechowywane w zakodowanej postaci. Po stworzeniu skryptu dodajemy skrót na pulpicie i cieszymy sie szybkim i łatwym uruchamianiuem gg radia.
- Domyślna stacja musi posiadać taką samą nazwę jak wyświetlana w oknie.
- Potrzebne paczki: php5-cli lub php4-cli
- Oczywiście skrypt należy uzyskać prawa wykonywania.Kod: Zaznacz cały
#!/bin/bash #------------- Ustawienia------------------------- domyslna='Szanty'; numer_gg='4352454'; haslo='xxxfdfjei'; odtwarzacz='/usr/bin/vlc'; sciezka_do_skryptu='/home/ajr/gadu_radio'; #------------------------------------------------------------------------------------------------------- cd $sciezka_do_skryptu; while [ !$ans ] do ans=$(zenity --list --text "Wybierz stacje" --radiolist --column "" --column "Opinion" TRUE $domyslna FALSE "Euro Dance" FALSE "Impreza" FALSE "House" FALSE "Rock" FALSE "Po Polsku" FALSE "Smak 80-tych Lat" FALSE "We Dwoje" FALSE "Disco Polo" FALSE "Hip-Hop" FALSE "Alternatywnie" FALSE "Pop" FALSE "Trance" FALSE "Jazz" FALSE "Szanty"); case $ans in "Euro Dance") ans='eurodance' ;; "Impreza") ans='impreza' ;; "House") ans='house' ;; "Rock") ans='rock' ;; "Po Polsku") ans='popolsku' ;; "Smak 80-tych Lat") ans='smak80lat' ;; "We Dwoje") ans='wedwoje' ;; "Disco Polo") ans='discopolo' ;; "Hip-Hop") ans='hiphop';; "Alternatywnie") ans='alternatywnie';; "Pop") ans='pop' ;; "Trance") ans='trance' ;; "Jazz") ans='jazz' ;; "Szanty") ans='szanty';; *) exit;; esac php ggRadio_CLI.php --gg=$numer_gg --pass=$haslo --channel=$ans --player=$odtwarzacz done;
- Skrypt do zmiany bitrate mptrójek:
Kod: Zaznacz cały
#!/bin/bash #Autor: Rupek ############################### FUNKCJE ##################################################### jeden () { wej=`zenity --file-selection --title="Wybierz plik mp3 do konwersji"` if [ "$?" = 1 ] ; then exit fi wyj=`zenity --file-selection --save --title="Wybierz miejsce zapisu pliku mp3"` if [ "$?" = 1 ] ; then exit fi bitrate=`zenity --list --title "Wybór bitrate" --text "Poniżej masz listę dostępnych bitrate obsługiwanych przez program, który zostanie użyty do konwersji pliku" --radiolist --height 450 --column "" --column "Dostępny bitrate" FALSE "8" FALSE "16" FALSE "24" FALSE "32" FALSE "40" FALSE "48" FALSE "56" FALSE "64" FALSE "80" FALSE "96" FALSE "112" FALSE "128" FALSE "144" FALSE "160"` if [ "$?" = 1 ] ; then exit fi lame --mp3input -b "$bitrate" "$wej" "$wyj.mp3" | zenity --progress --auto-close --text="Proszę czekać Trwa konwersja plików" zenity --info --text="Konwersja zakończona pomyślnie." } wszystkie () { bitrate=`zenity --list --title "Wybór bitrate" --text "Poniżej masz listę dostępnych bitrate obsługiwanych przez program, który zostanie użyty do konwersji wszystkich plików" --radiolist --height 450 --column "" --column "Dostępny bitrate" FALSE "8" FALSE "16" FALSE "24" FALSE "32" FALSE "40" FALSE "48" FALSE "56" FALSE "64" FALSE "80" FALSE "96" FALSE "112" FALSE "128" FALSE "144" FALSE "160"` if [ "$?" = 1 ] ; then exit fi for i in *.mp3 do lame --mp3input -b "$bitrate" "$i" "nowy$i" done | zenity --progress --auto-close --text="Proszę czekać Trwa konwersja plików" zenity --info --text="Konwersja zakończona pomyślnie." } ############################################################################################ ##################################### OKNO G£ÓWNE ######################################### if [ -x /usr/bin/lame ] then zenity --info --text="Program wykorzystuje do konwersji program Lame " else zenity --error --text="Nie masz zainstalowanego programu Lame Użyj programu synaptic, apt-get lub innego menagera plików do jego zainstalowania" exit fi wybor=`zenity --list --title "Wybór rodzaju konwersji" --text "Poniżej masz listę dostępnych rodzajów konwersji" --radiolist --column "" --column "Dostępny bitrate" FALSE "Pojedyńczy plik mp3" FALSE "Wszystkie pliki mp3 w folderze" TRUE "Zakończ działanie programu"` case "$wybor" in "Pojedyńczy plik mp3") jeden ;; "Wszystkie pliki mp3 w folderze") wszystkie ;; "Zakończ działanie programu") exit ;; *) zenity --error --text "Nic nie wybrałeś. Spróbuj ponownie" esac
- Skrypt do dzielenia plików po 50, 100 i 200 Mb
Kod: Zaznacz cały
#!/bin/bash #Autor: Rupek wej=`zenity --file-selection --title="Wybierz plik do podzielenia"` if [ "$?" = 1 ] ; then exit fi wyj=`zenity --file-selection --save --title="Podaj nazwę oraz wybierz miejsce zapisu spakowanych części."` if [ "$?" = 1 ] ; then exit fi rozmiar=`zenity --list --text "Wybierz rozmiar podzielonych części: 50m - dzielone części będą miały rozmiar 50 Mb 100m - dzielone części będą miały rozmiar 100 Mb 200m - dzielone części będą miały rozmiar 200 Mb " --title "Wybór wielkości podzielonych plików" --radiolist --column "" --column "Dostępne rozmiary" FALSE "50m" FALSE "100m" FALSE "200m"` if [ "$?" = 1 ] ; then exit fi kompresja=`zenity --list --title "Wybór bitrate" --text "Wybierz metodę kompresji: m0 - kompresja I stopnia (najsłabsza) m1 - kompresja II stopna m2 - kompresja III stopnia m3 - kompresja IV stopnia m4 - kompresja V stopnia m5 - kompresja VI stopnia (najmocniejsza)" --radiolist --column "" --column "Dostępny metody kompresji" FALSE "m0" FALSE "m1" FALSE "m2" FALSE "m3" FALSE "m4" FALSE "m5"` if [ "$?" = 1 ] ; then exit fi rar a "-v$rozmiar" "-$kompresja" "$wyj.rar" "$wej"
- Skrypt pozwalajacy słuchać radia:Wrzucamy np. do ~/bin/radyjo i możemy używać:
Kod: Zaznacz cały
#!/bin/bash # Configuration RADIO_DIR=~/.radyja PLAYER=echo # List available radios list_radios () { if [ -d $RADIO_DIR ] then cd $RADIO_DIR grep 'Opis:' *.fm | sed -e 's/\.fm:Opis:/:\t/' else echo 'No radios installed' fi } # Play radio play_radio () { RADIO="$RADIO_DIR/$1.fm" if [ -f $RADIO ] then URL=`grep 'Adres: ' $RADIO | sed 's/^Adres: //'` $PLAYER $URL else echo "Radio $1 not found" fi } # Print help print_help () { echo "USAGE: radyjo radio_name" echo "To list available radio_names, use radyjo --list" } # Main script if [ ! -n "$1" ] # No argument given then print_help elif [ "$1" = "--list" ] # List radios then list_radios elif [ "$1" = "--help" ] # Print help then print_help else # Play radio play_radio "$1" fi
albo przeglądać dostępne radia:Kod: Zaznacz cały
radio nazwa_radia
Radia są przechowywane w plikach o nazwach: nazwa_radia.fm w katalogu ~/.radyja w formacie:Kod: Zaznacz cały
radio --list
Kod: Zaznacz cały
Adres: [url]http://adres_pliku_ze_strumieniem/blabla.ogg[/url] Opis: Nazwa radia
- Dziennik haseł dla zapominalskich:
Kod: Zaznacz cały
http://rapidshare.com/files/72406953/dziennik_hasel.tar.gz
- nazwa: SKA
waga: 6.9 mb
link: http://rapidshare.com/files/71091022/ska_1.2.1.tar.gz
Skrypt korzysta z darmowych słowników tekstowych.
Jest szybki, wyszukuje pochodne (nie dopracowane) oraz jest możliwość dodawania haseł.
Skrypt sam się instaluje i usuwa, trzeba mu nadać prawa i uruchomić z poziomu użytkownika.
Wydruk z pomocy:Jak używać:Kod: Zaznacz cały
Składnia | command [opcje] [wyrażenie] [opcje] ap | z angielskiego na pol pa | z pol na angielski np | z niemieckiego na pol pn | z pol na niemiecki apusa | z angielskiego usa na pol pausa | z pol na amgielski usa chp | z chińskiego na pol pch | z pol na chiński czp | z czeskiego na pol pcz | z pol na czeski frp | z francuskiego na pol pfr | z pol na francuski grp | z greckiego na pol pgr | z pol na grecki hip | z hiszpańskiego na pol phi | z pol na hiszpański latp | z łacińskiego na pol plat | z pol na łaciński pros | z pol na rosyjski rosp | z rosyjskiego na pol pslo | z pol na słowacki slop | z słowackiego na pol pwl | z pol na włoski wlp | z włoskiego na pol --di | deinstalacja SKA +ap | edycja słownika ang-pol +pa | edycja słownika pol-ang +np | edycja słownika niem-pol +pn | edycja słownika pol-niem [wyrażenie] | słowo do tłumaczenia
Kod: Zaznacz cały
########################################################## # S K A - Wielojęzyczny słownik Konsolowy dla Linuxa ## # Wersja 1.2.1 [url]http://elektronikjk.republika.pl[/url] ## # ska --help | więcej informacji ## ########################################################## Wyniki szukania woda: woda (f) (rzecz.)=aqua woda (f) (rzecz.)=water Pokazać podobne do woda? [T/N] T Podobne do woda: deszczówka (f) (rzecz.)=rainwater falochron (m) (rzecz.)=breakwater lura (f) (rzecz.)=dishwater molo (n) (rzecz.)=breakwater nadtlenek (m) (rzecz.)=water ociekanie (n) (rzecz.)=water odwadniać (czas.)=dewater podlewać (czas.)=water podlewanie (n) (rzecz.)=water podmorski (przym.)=underwater podwodny (przym.)=underwater polewać (czas.)=water pomyje (pl) (rzecz.)=dishwater prowincja (f) (rzecz.)=backwater rozlewisko (n) (rzecz.)=backwater słodkowodny (przym.)=freshwater tlenienie (n) (rzecz.)=water woda (f) (rzecz.)=aqua woda (f) (rzecz.)=water wodociąg (m) (rzecz.)=water zalew (m) (rzecz.)=backwater zaścianek (m) (rzecz.)=backwater
- Radia internetowe:
Kod: Zaznacz cały
#!/bin/bash # Prosty skrypcik odpalajacy wybrane przez nas Radio Internetowe # # Autor: Lukasz Kubsz <qbsiu [at] o2.pl> clear echo "Jakie radio wybierasz?" echo "" echo "Zeby przerwac strumien wcisnij CTRL + C" echo "" echo "Dostepne radia to:" select radio in Hit' 'FM Rmf' 'FM Radioparty Zet Radio' 'Lodz Radiostacja Radio' 'Eska' 'Lodz Radiosfera Zlote' 'Przeboje TOK' 'FM Zakoncz do case $radio in "Hit FM") adres="http://warszawa.radio.pionier.net.pl:8000/pl/hitfm.ogg" ;; "Rmf FM") adres="http://213.251.141.62:8000" ;; "Radioparty") adres="http://87.98.223.92:8005" ;; "Zet") adres="http://213.251.140.82:8050" ;; "Radio Lodz") adres="http://ra.man.lodz.pl:8000/radiolodz.ogg" ;; "Radiostacja") adres="http://213.251.141.82:8150" ;; "Radio Eska Lodz") adres="http://olsztyn.radio.pionier.net.pl:8000/z/eska-lodz.ogg" ;; "Radiosfera") adres="http://serv.radiosfera.pl:7098" ;; "Zlote Przeboje") adres="http://szczecin.radio.pionier.net.pl:8000/pl/zloteprzeboje.ogg" ;; "TOK FM") adres="http://szczecin.radio.pionier.net.pl:8000/pl/radiotok.ogg" ;; "Zakoncz") exit ;; esac break done mplayer $adres
- Skrypt ten może być pomocny przy diagnozowaniu ewentualnych problemów z kartą dźwiękową. Skrypt korzysta m.in. z sysv-rc-conf - należy zainstalować.
Kod: Zaznacz cały
#!/bin/bash echo # time and user date=$(date) echo "Today is $date" me=$(whoami) echo "Sound tested by $me" echo echo echo "== Identifying System ==" uname -s -r -v -p -o cat /proc/cpuinfo | grep -i "model name" cat /proc/cpuinfo | grep -i "cpu mhz" cat /proc/meminfo | grep -i memtotal cat /proc/meminfo | grep -i swaptotal echo echo "== Information about a mixer device ==" amixer info echo echo "== Checking dsp devices ==" ls -l /dev | egrep -i dsp\|sound echo echo "== Checking mixer devices ==" ls -l /dev | egrep -i dsp\|mixer echo echo "== Checking Driver ==" if test -f /sbin/lspci then /sbin/lspci -v | egrep -i "(audio|multimedia|host bridge)" elif test -f /usr/bin/lspci then /usr/bin/lspci -v | egrep -i "(audio|multimedia|host bridge)" else echo "==> Test not available on this system !" fi echo echo "== ALSA version ==" cat /proc/asound/version echo echo "== Checking Actual Driver in Use (/etc/modprobe.d/sound) kernel 2.6 ==" if test -f /etc/modprobe.d/sound; then cat /etc/modprobe.d/sound else echo "==> Test not available on this system !" fi echo echo "== Checking Cross Platform Audio Output Library (/etc/libao.conf) ==" if test -f /etc/libao.conf; then cat /etc/libao.conf | grep -E -v "^#| ^$" else echo "==> /etc/libao.conf not available !" fi echo echo "== Checking ALSA configure files ==" if test -f /etc/asound.conf; then echo "/etc/asound.conf ====> exist" fi if test -f $HOME/.asoundrc; then echo -e "$HOME/.asoundrc ====> exist" fi if test -f $HOME/.asoundrc.asoundconf; then echo -e "$HOME/.asoundrc.asoundconf ====> exist" fi echo echo "== Checking esd config (/etc/esound/esd.conf) ==" if test -f /etc/esound/esd.conf; then echo "-----------------------------------------------------" cat /etc/esound/esd.conf | grep -E -v "^#| ^$" echo "-----------------------------------------------------" fi if test -d /dev/snd; then echo echo "== Checking alsa /dev/snd ==" ls --color=none /dev/snd fi echo echo "== Checking if Module Loaded ==" /sbin/lsmod | egrep -i snd\|sound\|audio\|game echo if test -x /usr/sbin/sysv-rc-conf; then echo "== Checking in what level alsasound service is configured to run ==" if test -x /etc/init.d/alsasound; then /usr/sbin/sysv-rc-conf --list alsasound else echo "Init script alsasound not exist !" fi echo echo "== Checking in what level alsa-utils service is configured to run ==" if test -x /etc/init.d/alsa-utils; then /usr/sbin/sysv-rc-conf --list alsa-utils else echo "Init script alsa-utils not exist !" fi else echo "==> Test for run levels not available on this system !" fi echo echo "== Checking if Sound Volume muted ==" if test -x /usr/bin/aumix; then aumix -q else echo "==> Test not available on this system !" fi echo echo "== Checking artsd setup ==" ps -A -f | grep -i artsd | grep -v grep echo echo "== Checking esd setup ==" ps -A -f | grep -i esd | grep -v grep echo echo "== Checking which program uses the sound card or cdrom ==" echo " (no output is okay)" if test -x /sbin/fuser; then /sbin/fuser -v /dev/dsp /sbin/fuser -v /dev/cdrom else /bin/fuser -v /dev/dsp /bin/fuser -v /dev/cdrom fi echo echo "== Test wav file . . . . . please wait ==" if test -f /usr/share/sounds/startup.wav then /usr/bin/play /usr/share/sounds/startup.wav > /dev/null else echo "==> Test not available on this system !" fi # Interactive part echo -n "Did you hear the soundfile Yes/No ?:" read answer # the user did not enter anything: while [ -z "$answer" ]; do echo "You did not tell me Yes or No !!!" echo -n "Did you hear the soundfile Yes/No ?:" read answer done echo "You typed: $answer Thanks !" sleep 2 echo echo "== End of Checks ==" echo
- Skrypt do wysuzkiwania intruzow w sieci lokalnej
a)pierwszy
-potrzebne pakiety: zenity i nbtscanb) drugiKod: Zaznacz cały
#!/bin/bash if [ -e ~/.list ]; then nbtscan 192.168.2.1-10 > .list else touch ~/.list nbtscan 192.168.2.1-10 > .list fi if [ -e ~/.ile ]; then wc -l ~/.list > ~/.ile else touch ~/.ile wc -l ~/.list > ~/.ile fi wynik="$[$(cat ~/.ile | cut -c1)-4]" cat ~/.list | tail -n$wynik | cut -d" " -f1-7
Kod: Zaznacz cały
#!/bin/bash if [ -e ~/.intruz ] ; then scan > ~/.intruz else touch ~/.intruz scan > ~/.intruz fi if [ "$(inter | cut -c2-6)" != "ASMAX" ]; then sleep 3600 netusers else if [ "$(wc -l ~/.intruz | cut -c1)" -gt "2" ]; then zenity --title "Intruz" --info --text "Wykryto intruza w twojej sieci lokalnej" fi if [ "$(cat ~/.intruz | cut -c1)" = "2" ]; then if [ "$(cat ~/.intruz | grep 192.168.2.7)" = "0" ]; then zenity --title "Intruz" --info --text "Wykryto intruza w twojej sieci lokalnej" fi fi if [ "$(wc -l ~/.intruz | cut -c1)" = "2" ]; then if [ "$(cat ~/.intruz | grep XXX-ECF00AD4F14)" = "0" ]; then zenity --title "Intruz" --info --text "Wykryto intruza w twojej sieci loka$ fi fi fi echo "ok" sleep 300 netusers
- Konwertowanie kodowania plików tekstowych z windowsowego cp1250 do UTF8. Przydaje się zaraz po przenosinach, a także do plików przesyłanych przez użytkowników Windowsów co o UTF nie słyszeli.
Kod: Zaznacz cały
#!/bin/bash if [ $# -gt 0 ] ; then iconv -f CP1250 -t UTF-8 --output=/tmp/$1 $1 cp $1 $1~ mv /tmp/$1 $1 else echo "Konwersja kodowania pliku tekstowego z CP1250 (Windows) na UTF-8" echo "użycie: $0 nazwapliku" fi
- Skrypt do wypakowywania prawie wszystkiego:
Kod: Zaznacz cały
#!/bin/bash if [ -f "$1" ] ; then case "$1" in *.tar.bz2) tar xjf $1 ;; *.tar.gz) tar xzf $1 ;; *.bz2) bunzip2 $1 ;; *.rar) unrar x $1 ;; *.gz) gunzip $1 ;; *.tar) tar xf $1 ;; *.tbz2) tar xjf $1 ;; *.tgz) tar xzf $1 ;; *.zip) unzip $1 ;; *.Z) uncompress $1 ;; *.7z) 7z x $1 ;; *) echo "'$1' nie może zostać rozpakowany" ;; esac else echo "'$1' nie jest poprawnym plikiem" fi
- Kompresja rar + dzielenie na części + zabezpieczenie hasłem. Przydaje się gdy chcemy wysłać coś specyficznego przez gmaila lub inna pocztę.
Skrypt został rozbudowany i trochę zmodyfikowany.Kod: Zaznacz cały
#!/bin/bash #Autor: DaFim rodzaj=`zenity --list --title "Kompresja" --text "Wybierz co chcesz skompresować" --radiolist --column "" --column "Dostępne opcje:" FALSE "plik" FALSE "folder"` if [ "$rodzaj" = folder ] ; then wej=`zenity --file-selection --title="Wybierz folder do podzielenia" --directory` if [ "$?" = 1 ] ; then exit fi else wej=`zenity --file-selection --title="Wybierz plik do podzielenia"` if [ "$?" = 1 ] ; then exit fi fi wyj=`zenity --file-selection --save --title="Podaj nazwę oraz wybierz miejsce zapisu." --filename "$wej"` if [ "$?" = 1 ] ; then exit fi rozmiar=`zenity --entry --title "Wybierz rozmiar podzielonych części" --text "Podaj rozmiar części i jednostkę np 9m. (0=brak dzielenia, 1k=1kb, 1m=1mb)" --width "400" --entry-text "0"` if [ "$rozmiar" = "" ] ; then exit fi kompresja=`zenity --list --title "Wybór bitrate" --text "Wybierz metodę kompresji: m0 - kompresja I stopnia (najsłabsza) m1 - kompresja II stopnia m2 - kompresja III stopnia m3 - kompresja IV stopnia m4 - kompresja V stopnia m5 - kompresja VI stopnia (najmocniejsza)" --radiolist --column "" --column "Dostępne metody kompresji" --height "400" FALSE "m0" FALSE "m1" FALSE "m2" FALSE "m3" FALSE "m4" FALSE "m5"` if [ "$?" = 1 ] ; then exit fi haslo=`zenity --entry --title "Podaj hasło" --text "Podaj hasło lub pozostaw puste" --width=400 --entry-text ""` if [ "$haslo" = "" ] ; then rar a -ep1 "-v$rozmiar" "-$kompresja" "$wyj.rar" "$wej" else rar a -ep1 "-p$haslo" "-hp$haslo" "-v$rozmiar" "-$kompresja" "$wyj.rar" "$wej" fi zenity --info --text="Kompresja zakończona"
- Potrzebowałem czegoś, co szybko przekonwertuje mp3 do słabszej jakości aby wgrać je potem na mp3 player. Zmieniłem trochę skrypt wcześniejszy przedstawiony Rupka, zeby nie pytał się o bitrate itd. tylko od razu konwertowal do ustalonej wartości (aktualnie VBR 5, mono) i wrzucał plik z możliwie taką samą nazwą do katalogu mp3conv na pulpicie, przywracając tagi przy uąyciu id3ed.
Kod: Zaznacz cały
#!/bin/bash #Autor: Rupek ############################### FUNKCJE ##################################################### jeden () { wej=`zenity --file-selection --title="Wybierz plik mp3 do konwersji"` if [ "$?" = 1 ] ; then exit fi temp=`echo "$wej" | sed 's/ /_/g'` temp=`basename $temp` temp=`echo "$temp" | sed 's/_/ /g'` wyj="$HOME/Desktop/mp3conv/$temp" lame --mp3input -m m -V 5 "$wej" "$wyj" | zenity --progress --auto-close --text="Proszę czekać Trwa konwersja plików" #przywracamy tagi artist=`id3ed -i "$wej" | grep artist | sed 's/artist: //'` songname=`id3ed -i "$wej" | grep songname | sed 's/songname: //'` album=`id3ed -i "$wej" | grep album | sed 's/album: //'` year=`id3ed -i "$wej" | grep year | sed 's/year: //'` comment=`id3ed -i "$wej" | grep comment | sed 's/comment: //'` tracknum=`id3ed -i "$wej" | grep tracknum | sed 's/tracknum: //'` genre=`id3ed -i "$wej" | grep genre | sed 's/genre: //'` genre=`echo "$genre" | sed 's/(.*)//'` #wywalamy nawias z numerem gatunku id3ed -s "$songname" -n "$artist" -a "$album" -y "$year" -c "$comment" -k "$tracknum" -g "$genre" -q "$wyj" zenity --info --text="Konwersja zakończona pomyślnie." } wszystkie () { dir=`zenity --file-selection --directory --title="Wybierz folder z mp3 do konwersji"` for i in "$dir/"*.mp3 do temp=`echo "$i" | sed 's/ /_/g'` temp=`basename $temp` temp=`echo "$temp" | sed 's/_/ /g'` wyj="$HOME/Desktop/mp3conv/$temp" lame --mp3input -m m -V 5 "$i" "$wyj" artist=`id3ed -i "$i" | grep artist | sed 's/artist: //'` songname=`id3ed -i "$i" | grep songname | sed 's/songname: //'` album=`id3ed -i "$i" | grep album | sed 's/album: //'` year=`id3ed -i "$i" | grep year | sed 's/year: //'` comment=`id3ed -i "$i" | grep comment | sed 's/comment: //'` tracknum=`id3ed -i "$i" | grep tracknum | sed 's/tracknum: //'` genre=`id3ed -i "$i" | grep genre | sed 's/genre: //'` genre=`echo "$genre" | sed 's/(.*)//'` id3ed -s "$songname" -n "$artist" -a "$album" -y "$year" -c "$comment" -k "$tracknum" -g "$genre" -q "$wyj" done | zenity --progress --auto-close --text="Proszę czekać Trwa konwersja plików" zenity --info --text="Konwersja zakończona pomyślnie." } ############################################################################################ ##################################### OKNO G£ÓWNE ######################################### if [ -x /usr/bin/lame ] then zenity --info --text="Program wykorzystuje do konwersji program Lame " else zenity --error --text="Nie masz zainstalowanego programu Lame Użyj programu synaptic, apt-get lub innego menagera plików do jego zainstalowania" exit fi wybor=`zenity --list --title "Wybór rodzaju konwersji" --text "Poniżej masz listę dostępnych rodzajów konwersji" --radiolist --column "" --column "Dostępny bitrate" FALSE "Pojedyńczy plik mp3" FALSE "Wszystkie pliki mp3 w folderze" TRUE "Zakończ działanie programu"` mkdir ~/Desktop/mp3conv #tworzy katalog, w ktorym znajda sie skompresowane pliki case "$wybor" in "Pojedyńczy plik mp3") jeden ;; "Wszystkie pliki mp3 w folderze") wszystkie ;; "Zakończ działanie programu") exit ;; *) zenity --error --text "Nic nie wybrałeś. Spróbuj ponownie" esac
- Skrypt odlicza czas i po jakim wykonuje czynność, którą sobie zażyczymy. W menu głównym programu wszystko można sobie ustawić.
Kod: Zaznacz cały
#!/bin/bash clear echo "Witaj w tekstowym wyłączniku." echo "Wprowadź liczbę minut do odliczenia." echo -n "> " read ileminut ilesekund=$[$ileminut*60] echo "Odliczanie będzie trwało $ilesekund sekund." function list { case "$1" in a) clear echo "1) Czas: $ilesekund sek. ($ileminut min.) - zmień." echo "2) Po zakończeniu: $pozak" echo "3) Rozpocznij odliczanie." echo "4) Zakończ" echo -n "> " read menu case "$menu" in 1) echo echo "Wprowadź nowy czas" echo -n read ileminut ilesekund=$[$ileminut*60] list a ;; 2) list b list a ;; 3) dodaj list a ;; 4) clear exit 0 ;; *) clear echo "Błędny wybór..." sleep 2 list a esac ;; b) echo "1) Wyłącz komputer" echo "2) Uruchom ponownie" echo "3) Wykonaj polecenie" echo echo -n "> " echo read poz case "$poz" in 1) pozak1="shutdown -h now" pozak="Wyłączenie komputera" ;; 2) pozak1="shutdown -r now" pozak="Ponowne uruchomienie komputera" ;; 3) echo "Wprowadź dowolne polecenie systemowe." echo -n "> " read pozak1 pozak="Polecenie systemowe: $pozak1" ;; esac ;; esac } function pokaz { clear echo "Pozostało odliczania: $ilesekteraz sek. / $ilesekund sek. ($ileminut min.)" dodaj } function dodaj { if [ "$ilesekteraz" = "$ilesekund" ] then $pozak1 else if [ "$juz" = "tak" ] then sleep 1 ilesekteraz1=$[$ilesekteraz+1] ilesekteraz=$ilesekteraz1 pokaz else juz=tak pokaz fi fi } list a
- Hasła - generowanie dla tych co muszą zmieniach hasła np. co tydzien.
Kod: Zaznacz cały
#!/usr/bin/perl -w system "clear"; use Term::ANSIColor; print color("blue"),"Hmm wymyślę hasła .. :) \n", color("reset"); print color("green"),"Podaj długość hasła (cyfrą) ",color("reset"); $li = <STDIN>; if ($li lt "1") { print color("red"),"nic nie wprowadzono...!,kończe program\n", color("reset");exit} print color("green"),"Podaj ilość haseł (cyfrą) ",color("reset"); $powt =<STDIN>; if ($powt lt "1") { print color("red"),"brak wszystkich danych...!, kończe program.\n",color("reset");exit} print "Ok, rozpoczynam generowanie haseł\n"; $ile = $powt; for (1 ..$powt) { { @lines = `pwgen -s -y $li`;print color("white"),"hasło.. ",color("reset");}foreach (@lines) {print;} }
- Skrypt pokazujący zużycie transferu (prędkość) przez aktualnie uruchomione aplikacje/usługi itp.
Kod: Zaznacz cały
#!/bin/bash max_chars=100 # maksymalna liczba znaków na konsoli (dlugosc paska wykresu) max_down_speed=65536 # maksymalna prędkość pobierania w bajtach (tutaj 65536 B = 64 KB = 512Mb) function get_speed() { speed=`cat /proc/net/dev | grep eth0` if [ "$1" == 'up' ]; then speed=`echo $speed | awk '{print $9}'` last=$last_upl last_upl=$speed else speed=`echo $speed | awk '{print $1}' | awk -F":" '{print $2}'` last=$last_down last_down=$speed fi speed=$[ $speed - $last ] } function kb() { bytes=$[$1 * 100 / 1024] val=`echo $bytes | sed 's/\([[:digit:]]*\)\([[:digit:]]\{2\}\)/\1.\2/g'` if [ `echo $val | wc -m` == 4 ]; then val="0$val" elif [ `echo $val | wc -m` == 3 ]; then val="0.$val" elif [ `echo $val | wc -m` == 2 ]; then val="0.0$val" fi } function wykres() { perc=$[$1 * 100 / $max_down_speed] print_chars=$[$perc/ (100 / $max_chars)] str='[' for s in `seq 0 $max_chars` do if [ $s -lt $print_chars ]; then str+='#' else str+='-' fi done str+=']' } last_upl=`cat /proc/net/dev | grep eth0 | awk '{print $9}'` last_down=`cat /proc/net/dev | grep eth0 | awk '{print $1}' | awk -F":" '{print $2}'` sleep 1 echo -e "\n" i=1 while [ true ] do get_speed 'up' kb $speed upl_speed=$val get_speed 'down' wykres $speed wykres=$str down_sum=$[$down_sum + $speed] kb $speed down_speed=$val down_avg=$[$down_sum/$i] kb $down_avg down_avg=$val echo -e "\e[2A$wykres" echo -e "Download: $down_speed KB/s\e[K\tUpload: $upl_speed KB/s\e[K\tDownload Avg: $down_avg KB/s" i=$[$i+1] sleep 1 done
- Skrypt pobierający angielskie słówko i idiom dnia z serwisu ang.pl:
Kod: Zaznacz cały
#!/bin/bash #Skrypt pobierający słówko i idiom dnia z serwisu ang.pl #stworzone przez SCT/Adawo <adawo.roag@gmail.com> #na licencji GPL #Pobieramy słówko dnia... wget "http://www.ang.pl/slowko_dnia.php?today=1&print=1" -q -O /tmp/slowko_dnia #usuwamy tagi html | kodowanie z iso-8859-1 na iso-8859-2 | html2text -nobs /tmp/slowko_dnia | iconv -f iso-8859-2 | sed -e "s/\ \{2\,\}//g; s/\\[img[a-zA-Z0-9 ./\n:]*\]//g; s/\\[http[a-zA-Z0-9 ./\n:]*\]//g; s/\\[Unknow[a-zA-Z0-9 ./\n:]*\]//g;" > /tmp/slowko_tmp #S£ÓWKO DNIA word=$(echo `cat /tmp/slowko_tmp | head -n 22 | tail -n 1 | sed -e "s/\[[a-zA-Z\/]*//g"`) #Slowko dnia def_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*DEFIN*" -b | head -c 3`) def_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | head -c 3`) word_definiction=$(echo `cat /tmp/slowko_tmp | tr "\n" " " | cut -b "$def_start-$def_end" | sed -e "s/DEFINITION: //g"`) #wycinamy przykład exa_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANS" -b | head -c 3`) exa_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | head -c 3`) word_example=$(echo `cat /tmp/slowko_tmp | tr "\n" " " | cut -b "$exa_start-$exa_end" | sed -e "s/EXAMPLE: //g"`) #translacja word_translation=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANSLATION: " | head -n 1 | sed -e "s/POLISH TRANSLATION: //g"`) #IDIOM DNIA: idiom_start=$(echo `cat /tmp/slowko_tmp | grep -e "IDIOM OF THE DAY" -n | head -c 2`) idiom=$(echo `cat /tmp/slowko_tmp | head -n $(expr $idiom_start + 2) | tail -n 1`) exa_start=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*EXAMPLE\:" -b | tail -n 1 | head -c 3`) exa_end=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANS" -b | tail -n 1 | head -c 3`) idiom_example=$(echo `cat /tmp/slowko_tmp | tr "\n" " " | cut -b "$exa_start-$exa_end" | sed -e "s/EXAMPLE: //g"`) idiom_translation=$(echo `cat /tmp/slowko_tmp | grep -e "[ \t]*POLISH TRANSLATION: " | tail -n 1 | sed -e "s/POLISH TRANSLATION: //g"`) #WYPISUJEMY: echo -e "\033[0;31mS£ÓWKO DNIA:\033[0m $word" echo -e "\033[0;31mDEFINICJA:\033[0m $word_definiction" echo -e "\033[0;31mPRZYK£AD:\033[0m $word_example" echo -e "\033[0;31mTRANSLACJA:\033[0m $word_translation" echo echo -e "\033[0;31mIDIOM:\033[0m $idiom" echo -e "\033[0;31mPRZYK£AD:\033[0m $idiom_example" echo -e "\033[0;31mTRANSLACJA:\033[0m $idiom_translation" #Sprzatamy po sobie śmeci... rm /tmp/slowko_dnia /tmp/slowko_tmp
- Nakładka na kompilator (c/c++).
Kod: Zaznacz cały
#!/bin/bash clear echo -e "\t\t\t\t ABC++ v0.1\n\n" if [ -d ~/abc++ ] then echo -e "Katalog abc++ istnieje\n" else mkdir ~/abc++/ echo -e "Utworzono katalog 'abc++' w folderze domowym\n" fi cd ~/abc++/ if [ -e ~/abc++/conf.txt ] then d=`cat conf.txt| head -1` e=`cat conf.txt| head -2| tail -1` u=`cat conf.txt| tail -1` else d=$PWD e="cpp" u="c++" fi cd $d c=1 while [ $c==1 ] do echo -e "Kody zrodlowe musza byc umieszczone w tym folderze: $d\n" echo -e "Domyslne rozszerzenie to: $e\n" echo -e "Wlaczony kompilator to: $u\n--------------------------------------------------------------------------------" echo -e "\n\t\t\t 1 - kompiluj nowy plk" echo -e "\t\t\t 2 - kompiluj ponownie" echo -e "\t\t\t 3 - edytuj kod źródłowy" echo -e "\t\t\t 4 - ustawienia" echo -e "\t\t\t 5 - wyjdz" read b case $b in "1")echo -e "Podaj nazwę pliku do kompilacji:\n" read a clear if [ -e $d/$a.$e ] then $u $a.$e -Wall -o $a.o 2> $a.txt if [ -e $d/$a.txt ] then mv $d/$a.txt ~/abc++/logi fi export $a xterm -e "./$a.o; bash" gedit $a.cpp else echo -e "\a Plik o podanej nazwie nie istnieje, sprawdz rozszerzenia, oraz sciezke\n\t\tdo katalogu z kodami zrodlowymi - sprawdz ustawienia\n\n" fi;; "2") clear if [ -e $d/$a.$e ] then $u $a.$e -Wall -o $a.o 2>> $a.txt if [ -e $d/$a.txt ] then mv $d/$a.txt ~/abc++/logi fi export $a xterm -e "./$a.o; bash" gedit $a.cpp; else echo -e "\a Plik o podanej nazwie nie istnieje, sprawdz rozszerzenia, oraz sciezke\n\t\tdo katalogu z kodami zrodlowymi - sprawdz ustawienia\n\n" fi;; "3") gedit $a.cpp;; "4") clear echo 'Aktualne ustawienia:' echo -e "\nKody zrodlowe musza byc umieszczone w tym folderze: $d\n" echo -e "Domyslne rozszerzenie to: $e\n" echo -e "Wlaczony kompilator to: $u\n--------------------------------------------------------------------------------" echo -e "\t\t\t1 - zmien folder kodow zrodlowych" echo -e "\t\t\t2 - zmian domyslne rozszerzenie kodow zrodlowych" echo -e "\t\t\t3 - zmien kompilator" echo -e "\t\t\t4 - wyczysc logi" echo -e "\t\t\t5 - wyjdz" read c case $c in "1")echo -e "Podaj domyslną sciezke do folderu z kodami zrodlowymi:\n" read d cd $d;; "2")echo -e "Podaj domyslną rozserzenie:\n" read e;; "3")echo -e "Podaj nazwe kompilatora: c - gcc, c++ - g++:\n" read u;; "4")cd ~/abc++/logi rm *.txt clear;; "5") clear;; *) echo "Nic nie wybrałeś";; esac;; "5") cd ~/abc++/ echo $d > conf.txt echo $e >> conf.txt echo $u >> conf.txt exit;; *) echo "Nic nie wybrałeś";; esac done
Pozdrawiam.