Fórum Ubuntu CZ/SK

Ubuntu pro osobní počítače => Software => Příkazový řádek a programování pro GNU/Linux => Téma založeno: honorguard 08 Května 2008, 01:28:39

Název: Užitečné skripty
Přispěvatel: honorguard 08 Května 2008, 01:28:39
Řekl jsem si že nebudu lakomý a podělím se o své skriptíky které jsem si za svou kariéru napsal a používám je skoro na všech netovkách. Kdo ví, třeba někdo přihodí i své skriptíky :).

Svátek.php zobrazí kdo má zrovna dnes svátek. Vytáhne si dnešní datum a poté pomoci case a poté normálně zobrazí svátek. Takže stačí použít příkaz include :). Jen bych ještě rád řekl že když jsem ho psal tak jsem měl na stole před sebou kalendář, všechno jsem opisoval růčo a ještě jsem neuměl psát všemi deseti :D.
http://www.edisk.cz/stahnout-soubor/08675/svatek.php_14.61KB.html (http://www.edisk.cz/stahnout-soubor/08675/svatek.php_14.61KB.html)

Návštěvnost.php je takové mé vlastní počítadlo návštěvnosti. Používá se přes cookies, které mají expiraci 10 minut. Návštěvnost ukládá do souborů které průběžně aktualizuje. Po té stačí jednoduchým skriptem zjistit číslo v souboru. Ale uznávám že toplist toho umí víc.
http://www.edisk.cz/stahnout-soubor/16087/navstevnost.php_2.33KB.html (http://www.edisk.cz/stahnout-soubor/16087/navstevnost.php_2.33KB.html)

Taky bych chtěl říct že jsou to moje úplně první 2 skripty (psal jsem je když mi bylo 15) a už jsem je nepřepisoval a prostě je používám. Kdyby jste třeba někdo měl nějaký nápad na vylepšení apod. tak řekněte. Jinak můžete přihazovat i svoje.
Název: Re: Užitečné skripty
Přispěvatel: Martin - ViPEr*CZ* 08 Května 2008, 08:48:28
Paráda určitě děkujeme.... mám návštěvní knihu: http://new_book.vipersoftware.net/book.php?rid=1&page=1
a pak mám něco jako takovej soukromej downloadovací nástroj: http://xshare.vipersoftware.net/

časem až zpracuju do nějaké pohodlné instalace, tak také přihodím... teda pokud o to bude nějakej zájem :D Jinak není to objektově, tak mě pak za ten kód moc neukamenujte :D :D
Název: Re: Užitečné skripty
Přispěvatel: ubuntu luky 08 Května 2008, 09:00:28
He  :) sem si chtel stahnout svatek a podivej co mi to udelalo s adresou ve firefoxu  :D kdyz sem dal ale zpet tak se mi pak objevil dialog na save... maj tam naky mouchy asi.

(http://img265.imageshack.us/img265/1497/obrazovkaac9.th.png) (http://img265.imageshack.us/my.php?image=obrazovkaac9.png)
Název: Re: Užitečné skripty
Přispěvatel: Marp 08 Května 2008, 09:28:09
Nějaké PHP skripty, které používám:
http://www.edisk.cz/stahnout-soubor/17771/PHP_skripty.rar_316.92KB.html (http://www.edisk.cz/stahnout-soubor/17771/PHP_skripty.rar_316.92KB.html)
Třeba se budou někomu hodit  ;)
Název: Re: Užitečné skripty
Přispěvatel: honorguard 08 Května 2008, 16:12:26
Přemýšlel jsem že přenesu ještě nějaké skritptíky (mám je v souboru classes.php kde mám funkce a metody třeba na návštěvní knihu, řazení článků apod.), ale spíš radši poděkuji MARPovi. Těch skriptů tam máš fakt požehnaně :).
Název: Re: Užitečné skripty
Přispěvatel: honorguard 09 Května 2008, 12:05:04
MP3TO64

Nevím jestli má někdo stejný problém jako já, ale můj telefon má malou kapacitu. Nejsou k němu ani sluchátka a tak když si chci do něj poslat nějaku písničku tak si ji převedu do 64bitrate. Vím že to není moc dobrá kvalita, ale na zvuku z repráčku mého telefonu se to vůbec nepozná. Nebaví mě věčné štelování gui a nastavování různých parametrů tak jsem ukecal kamaráda aby mi napsal bash skript. Dávám ho s jeho svolením sem. Jsou k němu potřeba programy MPLAYER a LAME:

http://www.edisk.cz/stahnout-soubor/39068/mp3to64.sh_478B.html (http://www.edisk.cz/stahnout-soubor/39068/mp3to64.sh_478B.html)

A ještě sem dám jeden svůj skriptík. Pro ostatní je asi úplně zbytečný, ale já programuju php atp. a tak když nainstauju systém, tak potřebuju apache, php, php+mysql atd. Nikdy si nepamatuju jak se ty balíky jmenují a vyhledávání v adeptu mě nebaví, takže jsem si napsal jednoduchý instalační skript. Není potřeba ho pouštět se sudo protože má sudo v sobě, takže se na heslo zeptá.
Instaluje balíky: apache2 php5-mysql libapache2-mod-php5 mysql-server.

http://www.edisk.cz/stahnout-soubor/38266/lamp_install.sh_260B.html

Ještě mě tak napadlo... je ve hvězdách kdy někdo z nás třeba smaže svůj edisk, nebo kdy uloz.to něco změní a přestanou fungovat odkazy... Nezaložíme například nějaký společný edisk účet kam budeme skripty dávat? Nebo nějakou doménu třeba na .ic.cz... nějaká jednoduchá stránka aby nám to nesmazali se vždycky najde...?
Název: Re: Užitečné skripty
Přispěvatel: Martin - ViPEr*CZ* 09 Května 2008, 12:11:58
Nooo tak nějakou doménu se dá.... já už se pokoušel o http://vipersoftware.net/linux a nástroj na sdílení jsem si taky dělal (používá to kámoška) http://xshare.vipersoftware.net
Název: Re: Užitečné skripty
Přispěvatel: honorguard 09 Května 2008, 12:19:02
No moc aktuální informace tam nejsou... Teda aspoń Debian Etch už má podle mě něco za sebou :D. Jestli by to šlo nějak aby lidi mohli přidávat tak by to bylo ok, ale chtělo by to nějak zakázat mazání, aby nepřišel rADo a naše skritpy nám nevymazal :D.
Název: Re: Užitečné skripty
Přispěvatel: Martin - ViPEr*CZ* 09 Května 2008, 12:22:45
No moc aktuální informace tam nejsou... Teda aspoń Debian Etch už má podle mě něco za sebou :D. Jestli by to šlo nějak aby lidi mohli přidávat tak by to bylo ok, ale chtělo by to nějak zakázat mazání, aby nepřišel rADo a naše skritpy nám nevymazal :D.
No tak to je takovej pokus.... nikdo se nějak moc nechytnul, tak jsem to dál nerozvíjel... pokud by měl někdo zájem to udržovat ve spolupráci se mnou, tak proč ne.... nahrávat a mazat by mohli moderátoři samozřejmě....na ně by byl kontakt a ty by to třídili přes svoje mailíky.....nijak zvlášt bych to nekomplikoval.

Upravili by jsme logo... přidali sekce.... PHP/HTML + Java + shell + já nevím co ještě.... ;)
Název: Re: Užitečné skripty
Přispěvatel: honorguard 09 Května 2008, 12:34:54
No tak proč ne... teď už chybí jen nějaký dobrovolník který se o to bude starat :).
Název: Re: Užitečné skripty
Přispěvatel: Martin - ViPEr*CZ* 09 Května 2008, 12:46:07
:D :D tak o tom to přesně je :D
Název: Re: Užitečné skripty
Přispěvatel: nettezzaumana 09 Května 2008, 13:11:26
ukazu Vam par svych skriptiku, ktere denne pouzivam ::

Kód: (google_search.sh) [Vybrat]
#!/bin/bash
# let's find quickly what should be found
# from cmdline ..
# feel free to edit it ;)
# regards by ntz

if [ -z "$1" ]; then
        echo "nothing to search?"
        exit 1
fi

SEARCH_TARGET=$(echo $@ | sed 's/\ /+/g')

firefox -new-tab "google.com/search?&q=$SEARCH_TARGET" &

exit 0
****
Kód: (man_html.sh) [Vybrat]
#!/bin/bash
# opens suggested manpage as new tab in firefox..
#-------------------------------------------------

man $1 --html="firefox -new-tab" &>/dev/null &
exit 0;
****
Kód: (calc.pl) [Vybrat]
#!/usr/bin/perl -w
#
# should hopefuly calculate given expression..
# in some cases need to enclose input string between double-quotes
#--------------------------------------------------------------

# print eval("@ARGV")."\n"; // ::one line solution..
# note, that using 'eval' function is not so safe, because
# 'eval' function evaluates given parameter as a expression..
# so e.g. parameter "system('ls -la')" returns output of same
# command, like given to shell ..
# regards by ntz

use strict;

sub CALCUL_IT {
my $PAYBACK = eval("@_");
print "$PAYBACK\n";
}

&CALCUL_IT(@ARGV);

exit 0;
Název: Re: Užitečné skripty
Přispěvatel: honorguard 09 Května 2008, 13:50:39
Moc pěkný, sice nevim na co je ten třetí, ale jinak ty první dva jsou hustý... k tomu nedávno ten návod na síťování... poslední dobou exceluješ :D.
Název: Re: Užitečné skripty
Přispěvatel: nettezzaumana 09 Května 2008, 13:56:19
ten treti je pouha perlova kalkulacka ::
~> calc.pl "8 * (2 ** 6) / 100"
5.12

ps. ;) diky, navod o sitovani je starsi a bo vic to nejhodnotnejsi v nem jsou pouze odkazy na dokumentaci jinde .. moje invence temer nulova..

zdravi ntz
Název: Re: Užitečné skripty
Přispěvatel: Marp 10 Května 2008, 19:32:11
Další PHP skripty zde: http://www.jaknaweb.com/scripty/php-scripty/ruzne
Název: Re: Užitečné skripty
Přispěvatel: honorguard 10 Května 2008, 23:42:22
Díky Marpíku!!! Ty skripty jsou fakt super... hlavně jich je strašně moc hodně užitečnejch ;).
Název: Re: Užitečné skripty
Přispěvatel: Marp 11 Května 2008, 00:01:52
To víš...strýček Google > php skripty ke stažení nebo jen php skripty  ;)
Název: Re: Užitečné skripty
Přispěvatel: starenka 14 Května 2008, 10:40:07
Nahodna "status message" pri kazdem spusteni Pidgina. Muj prvni plugin/perl skript... budte schovivavi, bugy hlaste na blogu..kuju

http://blog.starenka.net/programming/2008-05-05-random-status-message-plugin-for-pidgin

Název: Re: Užitečné skripty
Přispěvatel: mk33 10 Července 2008, 10:44:27
offline validace HTML

Sice nic moc, ale já jsem s tím plně spokojen. Snad to někomu pomůže. Není problém rozšířit skript např. o:
- rekurzivní procházení podadresářů (ale na mojich pár stránek to nepotřebuju)
- jiné soubory než php (mám jedině php)
tak jsi s tim klidně někdo pohrajte :)

Doinstalovat:
Kód: [Vybrat]
sudo apt-get install wdg-html-validator

Kód: [Vybrat]
#!/bin/bash

VYSTUP="vysledekValidace.txt";
rm $VYSTUP;

for I in *.php;
do
echo "--------------------------------------------------------------------------------" >> $VYSTUP;
echo "Zpracovavam soubor" $I":" >> $VYSTUP;
validate http://localhost/$I >> $VYSTUP;
echo "Soubor" $I "zpracovan"
echo "--------------------------------------------------------------------------------" >> $VYSTUP;

done
Název: Re: Užitečné skripty
Přispěvatel: Zax 18 Srpna 2008, 14:50:12
Otevirani a zavirani CDROMky jednim cvaknutim mysi (napr na ikonku v panelu) pomoci scriptu :D
viz tento clanek na mem blogu (http://lukasklika.cz/linux/jak-otevrit-a-zavrit-cdromku-pomoci-scriptu-v-linuxu/).

Kód: [Vybrat]
#!/bin/bash
touch /home/$USER/cdrominfo
cdromvar=$(cat /home/$USER/cdrominfo)
if [ "$cdromvar" == "1" ]; then
eject -t
cdromvar="0";
else
eject
cdromvar="1";
fi
cat /dev/null > /home/$USER/cdrominfo
echo $cdromvar > /home/$USER/cdrominfo
exit 0
Název: Re: Užitečné skripty
Přispěvatel: starenka 31 Srpna 2008, 20:26:21
Blbej 'skriptik', kt. ukaze teplotu cpu a disku. Pro pridani disku pridat dalsi sdax (uricte by to slo i elegantneji, ale mam jen jeden :) )

Kód: [Vybrat]
#!/bin/bash

echo -e "$(sensors | grep Core)\n/dev/sda:    +$(sudo smartctl -a /dev/sda | grep Temperature_Celsius | cut -d" " -f37).0°C  ($(sudo fdisk -l | grep "Disk /dev/sda" | cut -d" " -f3)GB)"

vypise neco ve stylu:
Kód: [Vybrat]
starenka@miniwanka:~$ temperatures
Core 0:      +50.0°C  (crit = +85.0°C)
Core 1:      +52.0°C  (crit = +85.0°C)
/dev/sda:    +39.0°C  (120.0GB)

pokud nemate, je potreba baliky: smartmontools a lm-sensors
-posleze pustit sensors-detect a nejaky ze senzeru (zrejme jen cpu) zavest to jadra....
Název: Re: Užitečné skripty
Přispěvatel: nettezzaumana 31 Srpna 2008, 22:20:15
Blbej 'skriptik', kt. ukaze teplotu cpu a disku. Pro pridani disku pridat dalsi sdax (uricte by to slo i elegantneji, ale mam jen jeden :) )
..
<< no, vzhledem k tomu, ze na nej potrebujes rootovsky prava a jeste pres sudo tak skutecne blbej je ;)
Název: Re: Užitečné skripty
Přispěvatel: starenka 31 Srpna 2008, 22:41:21
:)

rad se necham poucit jak na smartcl bez roota...  8)
Název: Re: Užitečné skripty
Přispěvatel: qUAKER 01 Září 2008, 09:42:29
skriptík pro uživatele e17.. pokud se nastaví, aby se spouštěl po startu Enlightenmentu, tak vždy při startu extrahuje edje soubor s wallpaperem, vytahá z něj proměnné(jestli se má obrázek roztáhnout, vycentrovat atd.) a aplikuje obrázek z edje souboru s použitím těch parametrů jako root pixmapu pro falešnou průhlednost. Pokud jej dáte do /usr/bin a změníte wallpaper, vždy bude stačit zadat do terminálu "názevscriptu" pro update.

NEPODPORUJE ANIMOVANÉ WALLPAPERY, THEME WALLPAPERY A STAŽENÉ EDJE SOUBORY Z NETU! POUZE PRO UŽIVATELSKÉ WALLPAPERY.

Další verze přidá možná podporu pro ty výchozí/stažené. Přidat podporu animovaných nebo theme wallpaperů je nemožné.

Ve skriptu je podpora překladů. Script je přeložen do češtiny a angličtiny s automatickou detekcí vašeho jazyka.

Kód: [Vybrat]
#!/bin/bash

# EasyLinux fake transparency script
# Licensed under GPL.
# Created by quaker.

# checks

# Translations

CS_TEXT() {

PACKAGE_MISSING="chybi."
PACKAGE_INSTALLED="je nainstalovan."
DIRCREATE="Vytvarim adresar.."
DIREXIST="Adresar existuje, preskakuji."
DIRNOTEXIST="Adresar neexistuje, vytvarim."
COPYING="Kopiruji soubor do faketrans adresare."
DECC="Rozbaluji.."
SETUP="Aplikuji zmeny."
HELP="Pouziti:

./faketrans - Aplikuje aktualni obrazek pozadi Enlightenmentu jako root pixmap

Parametry scriptu:

--force-scale|-s : Nepouzije konfiguraci .edj souboru a aplikuje obrazek roztazeny.
--force-fit|-f : Nepouzije konfiguraci .edj souboru a aplikuje obrazek jako dlazdice.
--force-center|-c : Nepouzije konfiguraci .edj souboru a vycentruje obrazek.
--help|-h : Vypise tuto zpravu.
"
INVALID="Spatny argument."
FORCE_SCALE="Pouzit parametr --force-scale nebo -s."
FORCE_FIT="Pouzit parametr --force-fit nebo -f."
FORCE_CENTER="Pouzit parametr --force-center nebo -c."
WITHOUT="Nezadan parametr, aplikuji z konfigurace."

}

EN_TEXT() {

PACKAGE_MISSING="is missing!"
PACKAGE_INSTALLED="is installed."
DIRCREATE="Creating directory.."
DIREXIST="Directory exists, skipping."
DIRNOTEXIST="Directory doesn't exist, creating."
COPYING="Copying file to the faketrans directory."
DECC="Decompressing.."
SETUP="Applying changes."
HELP="Using:

./faketrans - Applies Enlightenment background as a root pixmap

Script parameters:

--force-scale|-s : Doesn't use .edj configuration and scale the image.
--force-fit|-f : Doesn't use .edj configuration and tile the image.
--force-center|-c : Doesn't use .edj configuration and center the image.
--help|-h : Prints this message.
"
INVALID="Bad argument."
FORCE_SCALE="Used parameter --force-scale or -s."
FORCE_FIT="Used parameter --force-fit or -f."
FORCE_CENTER="Used parameter --force-center or -c."
WITHOUT="You didn't use a parameter, applying from .edj configuration."

}

# Check what language you are using
# If you want for example sk language, write

#if [ "$(echo $LANG | sed 's/_.*$//')" = "cs" ]; then
# CS_TEXT;
#elif [ "$(echo $LANG | sed 's/_.*$//')" = "sk" ]; then
# SK_TEXT;
# else
# EN_TEXT;
#fi

if [ "$(echo $LANG | sed 's/_.*$//')" = "cs" ]; then
CS_TEXT; else
EN_TEXT;
fi

for check in sed Esetroot edje_decc tee enlightenment_remote; do
if [ -z "$(which $check)" ]; then
echo "$check $PACKAGE_MISSING"
exit 1
else
echo "$check $PACKAGE_INSTALLED"
fi
done

# Variables.

faketrans_dir="$HOME/.faketrans"
log_file="/tmp/faketrans.log"

# Functions

function get_wallpaper()
{

where=$(/usr/bin/enlightenment_remote -default-bg-get|grep "REPLY: ")
get=$(echo ${where:8}|sed 's/"//')
echo $get|tee $log_file

echo "$DIRCREATE"|tee -a $log_file

if [ -d "$faketrans_dir" ]; then
echo "$DIREXIST"|tee -a $log_file
rm -rf $faketrans_dir/*
else
echo "$DIRNOTEXIST"|tee -a $log_file
mkdir "$faketrans_dir"
fi

echo "$COPYING"|tee -a $log_file

cp $get $faketrans_dir
}

function decc_file()
{
decc_file=$(ls $faketrans_dir)

cd "$faketrans_dir"

echo "$DECC"|tee -a $log_file

/usr/bin/edje_decc $decc_file|tee -a $log_file

cd *
}

function set_up()
{
echo "$SETUP"|tee -a $log_file

getedc=$(cat $(ls|grep edc)|grep "image {")
name=$(echo ${getedc:17}|sed 's/"; }//')
echo $name|tee -a $log_file

getstyle=$(cat $(ls|grep edc)|grep "data {")
style=$(echo ${getstyle:22}|sed 's/"; }//')
echo $style|tee -a $log_file
}

function print_help()
{
echo "$HELP"
echo "$VERSION"
}

function print_bad()
{
echo "$INVALID"
}

# Body

if [ "$#" = "0" ]; then
echo "$WITHOUT"
get_wallpaper
decc_file
set_up
case $style in
0) Esetroot -scale "$name"|tee -a $log_file
;;
1) Esetroot -fit "$name"|tee -a $log_file
;;
2) Esetroot -center "$name"|tee -a $log_file
esac
elif [ "$#" = "1" ]; then
case $1 in
--force-scale|-s)
echo "$FORCE_SCALE"
get_wallpaper
decc_file
set_up
Esetroot -scale "$name"|tee -a $log_file
;;
--force-center|-c)
  echo "$FORCE_CENTER"
  get_wallpaper
  decc_file
  set_up
  Esetroot -center "$name"|tee -a $log_file
;;
--force-fit|-f)
       echo "$FORCE_FIT"
       get_wallpaper
       decc_file
       set_up
       Esetroot -fit "$name"|tee -a $log_file
;;
--help|-h) print_help
;;
*)
  print_bad
  print_help
esac
else
print_bad
print_help
fi

exit 0
Název: Re: Užitečné skripty
Přispěvatel: Ondra K... 14 Září 2008, 14:17:14
Tenhle paskvil jsem si napsal na třídění fotek z dovolený. Není to nic moc, ale možná by se to někomu mohlo hodit.

Kód: [Vybrat]
#!/bin/bash
#Rozdeli soubory s urcitou priponou ve slozce dle data vytvoreni
echo -n "Přípona souborů ke zpracování:"
read koncovka
ls  -l *.$koncovka | awk  '{print $6}' | sort | while read datum
do
mkdir -p ../rozdelene
mkdir -p ../rozdelene/$datum
done
echo "Složky vytvořené, začínám třídit"
for soubor in *.$koncovka; do
datum_vyt=$(ls  -l $soubor | awk  '{print $6}')
cp $soubor ../rozdelene/$datum_vyt/
done
Název: Re: Užitečné skripty
Přispěvatel: Zax 15 Září 2008, 22:15:19
Jsem bordelář, proto jsem si napsal scriptík, který mi sám uklidí plochu :)
Ale pozor - pokud ho uložíte na plochu, uklidí i sám sebe :D
Cílový adresář (proměnná slozka) si upravte podle své potřeby.

Kód: [Vybrat]
#!/bin/bash
slozka=/media/mojesoubory/uklid/$(date +%F)
mkdir $slozka
for i in /home/$USER/Plocha/*; do
    mv $i $slozka;
done
Název: Re: Užitečné skripty
Přispěvatel: Martin - ViPEr*CZ* 16 Ledna 2009, 20:40:41
Momentálně, když jsem tvořil asi 3 aplikace na server, tak jsem potřeboval docela třídu na řetězce... no vím o dobrý QString jenže jsem se chtěl vyhnout nutnosti dalších knihoven, tak jsem napsal něco vlastního... není to žádnej zázrak, ale to co jsem potřeboval to splnilo. Bude-li mít někdo zájem podělím se s ním o zdrojové kódy. Jsou jak pro KDevelop, make z konzole nebo Visual Studio.  ;)
Název: Re: Užitečné skripty
Přispěvatel: Martin 'Želva' Malý 20 Ledna 2009, 20:07:10
Hromada skriptů je na: http://www.linuxsoft.cz/
Název: Re: Užitečné skripty
Přispěvatel: Krchy 25 Ledna 2009, 14:47:03
Taky přispěji se svou troškou do mlýna.

Používám následující skript pro vytvoření mp3 z flashového videa z youtube. Výhoda mého skriptu je, že lze zadat jednotlivé adresy do souboru, ze kterého se pak jednotlivé adresy načtou, flashová videa se stáhnou, převedou na mp3, automaticky se pojmenují tak, jak jsou na youtube pojmenovaná (z html kódu obsah značky <title>) a stažený flash soubor je hned smazán. Skriptu můžete jako argument zadat buď externí soubor s adresami, nebo rovnou jednotlivé adresy, ze kterých chcete stahovat. Pokud skript nemá žádný argument, předpokládá se, že je v místě uložení skriptu soubor pojmenovaný url.txt se seznamem url adres.

Pro správnou funkčnost je třeba mít nainstalovaný balíčky youtube-dl a mplayer. Možná ještě něco, ale to už si nepamatuji.


Kód: [Vybrat]
#!/bin/bash

if [ $# = 0 ]; then
INPUT="url.txt"
echo \#\#\# - Url z defaultniho souboru \"url.txt\".
elif [ -f $1 ]; then
INPUT=$1
echo \#\#\# - Url z externiho souboru \"$1\".
fi

NOERROR=1

if [ ${#INPUT} -gt 0 ]; then
NOERROR=0
while read INPUTLINE
do
URL="$(echo $INPUTLINE)"
#stazeni html pro zjisteni nazvu videa
wget $URL
FILE=$(ls watch*)
#ulozeni nazvu videa z tagu <title>
FILENAME=$(cat $FILE | grep "<title>" | sed 's#<title>YouTube - ##;s#</title>##')
#oriznuti o pripadne mezery na zacatku nazvu + koncovka
FILENAME="$(echo $FILENAME.mp3)"
rm $FILE
#stazeni flashoveho videa
youtube-dl $URL
FLASH=`ls *.flv`
# pro prevod videa do mpg
# ffmpeg -i $FILE "$video_FILE.mpg"
mplayer -dumpaudio $FLASH -dumpfile "$FILENAME"
rm $FLASH
done < $INPUT
#argument by mel byt url adresa
else
for ARG in $@
do
START=${ARG:0:4}
if [ $START = http ]; then
  #stazeni html pro zjisteni nazvu videa
wget $ARG
FILE=$(ls watch*)
#ulozeni nazvu videa z tagu <title>
FILENAME=$(cat $FILE | grep "<title>" | sed 's#<title>YouTube - ##;s#</title>##')
#oriznuti o pripadne mezery na zacatku nazvu + koncovka
FILENAME="$(echo $FILENAME.mp3)"
rm $FILE
#stazeni flashoveho videa
youtube-dl $URL
FLASH=`ls *.flv`
# pro prevod videa do mpg
# ffmpeg -i $FILE "$video_FILE.mpg"
mplayer -dumpaudio $FLASH -dumpfile "$FILENAME"
rm $FLASH
#nastaveni priznaku
NOERROR=0
else
echo \#\#\# - Url adresa musi zacinat \"http\".
fi
done
fi

if [ $NOERROR = 1 ]; then
echo \#\#\# ERR - Zadane argumety nebyly soubory ani url adresou.
fi
Název: Re: Užitečné skripty
Přispěvatel: arrange 06 Února 2009, 18:01:27
Toto je skript na čištění systému od starých a (většinou) zbytečných souborů.

Maže staré soubory z koše, staré náhledy z Nautilu a cache apt-getu.
Gró tohoto skriptu nepochází z mého pera, ale z http://ubuntuforums.org/showthread.php?t=698649&highlight=trash od uživatele tweedledee.
Další podrobnosti viz poznámky přímo ve skriptu.

Upozornění: skript používá příkaz rm, který může potencionálně vymazat důležité soubory. Pokud si chcete skript vyzkoušet nejdříve nanečisto, zálohujte ho, a pak nahraďte ve svém oblíbeném editoru řetězce "rm -v", "rm -fv" a "rm -rfv" řetězcem "echo". Tím se zamýšlené soubory k výmazu pouze zobrazí (v Terminálu), a nevymažou. Pokud jste si omylem vymazali nějaké důležité soubory, nadávky pošlete do /dev/null a náměty ke zlepšení sem.

Jakékoliv (konstruktivní) připomínky a náměty ke skriptu vítám : )

Kód: [Vybrat]
#! /bin/bash

#-----------------------------------------------------------
PromazNahledy(){
#Starší náhledy než x dnů budou vymazány
NahledyLimitDnu=120

echo "Mažu náhledy ..................................."
echo

find ~/.thumbnails -iname '*.png' -atime +$NahledyLimitDnu -type f -exec rm -v '{}' \;
}

#----------------------------------------------------------
VymazCacheAptu(){

echo "Mažu cache apt-getu ------------------------------"
echo

sudo apt-get clean
sudo -k
}

#---------------------------------------------------------
PromazKos(){

echo "Mažu koš ..................................."
echo

# Promaže koš, v závislosti na zadaných kritériích
# Složky jsou brány jako celek
# Používá ctime (soubor změněn/přemístěn) při kontrole stáří souboru
# Nikdy nemaže soubory mladší 1 dne
# Nemaže soubory vlastněné jiným vlastníkem než tím, který tento skript spouští
# Všechny údaje by měly být celá nezáporná čísla

# Cesta ke koši: zkontrolujte, jestli souhlasí
# Freedesktop dejte 0 pokud systém neukládá info (adresář ../Trash/info)
#  tzn. má všechny soubory v adresáři Trash, ne v podadresářích "files" a "info"
# jinak 1 (u novějších Gnome)
CestaKeKosi=~/.local/share/Trash
Freedesktop=1

# Chcete smazat i odpovídající soubory v info (viz Freedesktop výše)?
# 1=ano. Musíte mít ale taky nastaveno Freedesktop=1.
InfoPryc=1

# Limity pro soubory ve dnech
# Definice velikosti souborů viz níže
DnuSoubory=90
DnuSouboryVelke=30
DnuSouboryMamut=7
DnuAdresare=90
DnuAdresareVelke=45
DnuAdresareMamut=10

# Spodní hranice velikosti souborů a adresářů v MB
VlkstVelkehoSouboru=10
VlkstMamutSoub=100
VlkstVelkehoAdr=15
VlkstMamutAdr=150

# Celkový max. limit velikosti koše v MB. Mazat se začne až po jeho překročení.
# Nebo možno nastavit MazatITak - viz níže
MaxVlkst=2000

# 1, pokud chcete promazat koš i v případě, že je jeho velikost menší než MaxVlkst
MazatITak=1

# O kolik dnů/MB je možné slevit směrem dolů, pokud je potřeba se dostat pod MaxVlkst
DnuSouboryDolu=1
DnuSouboryVelkeDolu=1
DnuSouboryMamutDolu=1
DnuAdresareDolu=1
DnuAdresareVelkeDolu=1
DnuAdresareMamutDolu=1
VlkstVelkehoSouboruDolu=1
VlkstMamutSoubDolu=2
VlkstVelkehoAdrDolu=1
VlkstMamutAdrDolu=3

# Minimální velikost, pod kterou se nejde
# Nataveno na 3 např. nesmaže soubory mladší než 3 dny
DnuSouboryMin=1
DnuSouboryVelkeMin=1
DnuSouboryMamutMin=1
DnuAdresareMin=1
DnuAdresareVelkeMin=1
DnuAdresareMamutMin=1
VlkstVelkehoSouboruMin=1
VlkstMamutSoubMin=1
VlkstVelkehoAdrMin=1
VlkstMamutAdrMin=1

#-------------------------------------------------------------
VycistitKos() {
    # mazeme soubory
    # normální
    TP="$1"
    find "$TP" -maxdepth 1 -type f -ctime +$DnuSoubory -execdir rm -fv '{}' +

    # velké
    find "$TP" -maxdepth 1 -type f -ctime +$DnuSouboryVelke -size +${VlkstVelkehoSouboru}M -execdir rm -fv '{}' +
   
    # mamutí
    find "$TP" -maxdepth 1 -type f -ctime +$DnuSouboryMamut -size +${VlkstMamutSoub}M -execdir rm -fv '{}' +
   
    # složky
    # normální
    find "$TP" -maxdepth 1 -type d -ctime +$DnuAdresare -execdir rm -rfv '{}' +
   
    # velké
    for i in `find "$TP" -maxdepth 1 -type d -ctime +$DnuAdresareVelke`
    do
      if [ `du -sm "$i"|awk '{print $1}'` -gt $VlkstVelkehoAdr ]
      then
        rm -rfv "$i"
      fi
    done
   
    # mamutí
    for i in `find "$TP" -maxdepth 1 -type d -ctime +$DnuAdresareMamut`
    do
      if [ `du -sm "$i"|awk '{print $1}'` -gt $VlkstMamutAdr ]
      then
        rm -rfv "$i"
      fi
    done
}

PromazatInfo() {
    # promaž "undelete" informace
    find "$CestaKeKosi/info" -maxdepth 1 -type f -execdir ls '{}' + |sed -e 's/.\///' |sed -e 's/.trashinfo$//' > /tmp/VycistitKos_trashinfo.list
    while read line
    do
      ls "$CestaKeKosi/files/${line}" > /dev/null 2>&1
      if [ $? -ne 0 ]
      then
        rm -rfv "$CestaKeKosi/info/${line}.trashinfo"
      fi
    done < /tmp/VycistitKos_trashinfo.list
    rm -rfv /tmp/VycistitKos_trashinfo.list
}

Vetsi() {
    if [ $1 -gt $2 ]
    then
      return $1
    else
      return $2
    fi
}

export IFS=$'\n'
KontrolniSoucet=$(($DnuSouboryDolu + $DnuSouboryVelkeDolu + $DnuSouboryMamutDolu + $DnuAdresareDolu + $DnuAdresareVelkeDolu + $DnuAdresareMamutDolu))

# vymazat soubory, pokud je nastaveno mazání i při nedosažení max. limitu pro koš
if [ $MazatITak -eq 1 ]
then
  if [ $Freedesktop -eq 1 ]
  then
    VycistitKos "$CestaKeKosi/files"
  else
    VycistitKos "$CestaKeKosi"
  fi
fi

# smyčka dokud se nedostaneme pod maximum
while [ `du -sm $CestaKeKosi|awk '{print $1}'` -gt $MaxVlkst ]
do
  if [ $Freedesktop -eq 1 ]
  then
    VycistitKos "$CestaKeKosi/files"
  else
    VycistitKos "$CestaKeKosi"
  fi

  if [ $(($DnuSoubory + $DnuSouboryVelke + $DnuSouboryMamut + $DnuAdresare + $DnuAdresareVelke + $DnuAdresareMamut)) -eq $KontrolniSoucet ]
  then
     # míň už to nejde
     break
  fi

  # snížit o dané dny/MB, ale ne pod dané minimum
  Vetsi $((DnuSoubory - $DnuSouboryDolu)) $DnuSouboryMin
  DnuSoubory=$?

  Vetsi $((DnuSouboryVelke - $DnuSouboryVelkeDolu)) $DnuSouboryVelkeMin
  DnuSouboryVelke=$?

  Vetsi $((VlkstVelkehoSouboru - $VlkstVelkehoSouboruDolu)) $VlkstVelkehoSouboruMin
  VlkstVelkehoSouboru=$?

  Vetsi $((DnuSouboryMamut - $DnuSouboryMamutDolu)) $DnuSouboryMamutMin
  DnuSouboryMamut=$?

  Vetsi $((VlkstMamutSoub - $VlkstMamutSoubDolu)) $VlkstMamutSoubMin
  VlkstMamutSoub=$?

  Vetsi $((DnuAdresare - $DnuAdresareDolu)) $DnuAdresareMin
  DnuAdresare=$?

  Vetsi $((DnuAdresareVelke - $DnuAdresareVelkeDolu)) $DnuAdresareVelkeMin
  DnuAdresareVelke=$?

  Vetsi $((VlkstVelkehoAdr - $VlkstVelkehoAdrDolu)) $VlkstVelkehoAdrMin
  VlkstVelkehoAdr=$?

  Vetsi $((DnuAdresareMamut - $DnuAdresareMamutDolu)) $DnuAdresareMamutMin
  DnuAdresareMamut=$?

  Vetsi $((VlkstMamutAdr - $VlkstMamutAdrDolu)) $VlkstMamutAdrMin
  VlkstMamutAdr=$?
done

# promazat info, pokud nastaveno k promazání
if [ $Freedesktop -eq 1 ]
then
  if [ $InfoPryc -eq 1 ]
  then
    PromazatInfo
  fi
fi
}

PromazNahledy
PromazKos
VymazCacheAptu

exit 0
Název: Re: Užitečné skripty
Přispěvatel: petrakis 23 Října 2009, 07:20:22
Tohle je jednoduchej script v pythonu kterej jsem si napsal na ukladani rozlicnejch scriptu. Je rychlej a jednoduchej, data uklada do souboru .SCRIPTBOOK v domovskem adresari. V pripade ze je vyplneno pole URL po kliknuti na nej se zadana adresa otevira ve firefoxu.  V pripade ze se nekomu chce, muze k tomu napsat moznost vyhledavani.

(http://top100cyprus.com/scriptbook.png)


SPCRIPTBOOK.py

Kód: [Vybrat]
#! /usr/bin/env python



import pickle, os,pygtk,webbrowser,sys
pygtk.require("2.0")
import gtk

class scriptbooks:
    def __init__(self,loaded_scriptbook_list = None):
        if not loaded_scriptbook_list:self.scriptbook_list = {}
        else:
            self.scriptbook_list = loaded_scriptbook_list["SPCRIPTBOOK"]

        if loaded_scriptbook_list["SETTINGS"]:
            self.SETTINGS = {}
            self.SETTINGS["browser"] = loaded_scriptbook_list["SETTINGS"]["browser"]
          

        else:
            self.SETTINGS = {"browser":"firefox"}
        print self.SETTINGS["browser"]

        self.SPCRIPTBOOK_FILE = {"SETTINGS":self.SETTINGS,
                              "SPCRIPTBOOK":self.scriptbook_list}
        

    def show_scriptbook_list(self):
        for key, item in self.scriptbook_list.iteritems():
            print key
            print "\t",item

    def get_scriptbook(self,name):
        return self.scriptbook_list[name]

    def get_scriptbooks(self):
        keys_list = self.scriptbook_list.keys()
        keys_list.sort()
        print keys_list
        return keys_list

    def add_new_scriptbook(self,new_scriptbook):
        self.scriptbook_list[new_scriptbook["name"]] = new_scriptbook
        self.save_scriptbook_list()


    def remove_scriptbook(self,scriptbook):
        if scriptbook in self.scriptbook_list.keys():
            self.scriptbook_list.pop(scriptbook)
            self.save_scriptbook_list()


    def modify_scriptbook(self,scriptbook,field,data):
        if field == "name":
            self.scriptbook_list[data] = self.scriptbook_list.pop(scriptbook)
        else:
            self.scriptbook_list[scriptbook][field] = data
        self.save_scriptbook_list()

    def save_scriptbook_list(self):
        print"saving scriptbook_list..."
        HOME = self.get_home_dir()
        try:
            FILE = open(os.path.join( HOME,".SPCRIPTBOOK"),"w")
            pickle.dump(self.SPCRIPTBOOK_FILE,FILE)
            FILE.close()
        except:
            print"Warning!Could not write:",os.path.join(HOME,".SPCRIPTBOOK")

    def get_home_dir(self):
        try:
            HOME = os.getenv("HOME")
        except:
            HOME = "./"
        print "Home dir is:",HOME
        return HOME

def load_scriptbook_list():
    try:
        FILE = open(os.path.join(os.getenv("HOME") ,".SPCRIPTBOOK"),"r")
        scriptbooks = pickle.load(FILE)
        FILE.close()
        return scriptbooks
    except:
        return {"SETTINGS":{"browser":"firefox"},"SPCRIPTBOOK":{}}

def dump(scriptbooks):
    '''writes scriptbooks to file '-w filename' or /tmp/SPCRIPTBOOK.txt if there is no filename'''
    names = scriptbooks.keys()
    names.sort()
    if len(sys.argv) == 3:
        filename = sys.argv[2]
    else:
        filename = "/tmp/SPCRIPTBOOK.txt"
    print "dumping to :",filename    
    FILE = open(filename,"w")
    for item in names:
        print
        print item
        FILE.write("\n\n"+item)
        for a , b in scriptbooks[item].iteritems():
            if a =="name":
                pass
            else:
                if a =="code":
                    print a,":\n"
                    FILE.write("\t"+a+" :\n\n")
                    print b,"\n"
                    FILE.write(b+"\n")
                else:
                    print a,"\t\t:\t",b
                    FILE.write("|\t"+a+" \t\t| "+b)
            FILE.write("\n---------------------------------------------------------\n")
    FILE.close()

def print_help():
    print
    print "SPCRIPTBOOK.py"
    print
    print "Usage:\tSPCRIPTBOOK.py [-w [filename]]"
    print
    print "if no filename specified it will be saved in '/tmp/SPCRIPTBOOK.txt'"
    print
    print "'SPCRIPTBOOK.py -h' print this message."
    print
    
class MainWindow:
    def __init__(self,data = None):
        self.show_scriptbook_window = False
        self.remove_scriptbook_window = False
        self.modify_window = False
        self.yes_no_window = False
        self.SPCRIPTBOOK = scriptbooks(load_scriptbook_list())
        
        if len(sys.argv) > 1 and sys.argv[1] == "-w":
            dump(self.SPCRIPTBOOK.scriptbook_list)

        
        self.temp_scriptbook = {"name":"",
                             "url":"",
                             "code":"",
                             "extra":""}

        self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.window.set_position(gtk.WIN_POS_CENTER)
        self.window.set_size_request(800,600)
        self.window.set_title("SPCRIPTBOOK")
        self.window.connect("delete_event",self.delete_event)
        vbox = gtk.VBox()
        self.window.add(vbox)
        scrolled_area = gtk.ScrolledWindow()
        scrolled_area.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
        vbox.pack_start(scrolled_area,True)

        box = gtk.VBox()
        scrolled_area.add_with_viewport(box)
        for item in self.SPCRIPTBOOK.get_scriptbooks():
            button = gtk.Button(item)
            button.connect("clicked",self.show_scriptbook,item)
            box.pack_start(button,False,False)
            button.show()
        box.show()

        hbox = gtk.HBox(homogeneous=True)
        button = gtk.Button("Add New")
        button.connect("clicked",lambda x:self.modify_scriptbook())
        hbox.pack_start(button)
        button.show()

        button = gtk.Button("Remove")
        button.connect("clicked",self.remove_scriptbook_win)
        hbox.pack_start(button)
        button.show()

        button = gtk.Button("Close")
        button.connect("clicked",self.delete_event,data)
        hbox.pack_start(button,expand = True,padding = 5)
        button.show()
        vbox.pack_start(hbox,False,False)
        hbox.show()
        vbox.show()
        scrolled_area.show()
        self.window.show()


    def show_scriptbook(self,widget,scriptbook):
        print"showing scriptbook...",scriptbook
        self.show_scriptbook_window = gtk.Window()
        self.show_scriptbook_window.connect("delete_event",self.delete_event,"show window")
        self.show_scriptbook_window = gtk.Window(gtk.WINDOW_TOPLEVEL)
        self.show_scriptbook_window.set_position(gtk.WIN_POS_CENTER)
        self.show_scriptbook_window.set_size_request(600,500)
        self.show_scriptbook_window.set_title("SPCRIPTBOOK")
        vbox = gtk.VBox()
        self.show_scriptbook_window.add(vbox)

        scrolled_area = gtk.ScrolledWindow()
        scrolled_area.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
        vbox.pack_start(scrolled_area,True)

        box = gtk.VBox()
        scrolled_area.add_with_viewport(box)

        CONT = self.SPCRIPTBOOK.get_scriptbook(scriptbook)
        frame = gtk.Frame("Name")

        label = gtk.Label(CONT["name"])
        frame.add(label)
        frame.show()
        label.show()
        box.pack_start(frame)


        frame = gtk.Frame("Url")
        event_box = gtk.EventBox()
        frame.add(event_box)
        label = gtk.Label(CONT["url"])
        event_box.add(label)
        event_box.show()
        event_box.set_events(gtk.gdk.BUTTON_PRESS_MASK)
        event_box.connect("button_press_event", lambda x,y:self.open_url(CONT["url"]))
        label.modify_fg(gtk.STATE_NORMAL,event_box.get_colormap().alloc_color("blue"))    
        frame.show()
        label.show()
        box.pack_start(frame)

        frame = gtk.Frame("Code")

        label = gtk.Label(CONT["code"])
        label.set_selectable(True)
        scrolled_area2 = gtk.ScrolledWindow()
        scrolled_area2.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
        scrolled_area2.add_with_viewport(label)
        scrolled_area2.set_size_request(500,280)
        frame.add(scrolled_area2)
        scrolled_area2.show()
        frame.show()
        label.show()
        box.pack_start(frame)
        
        frame = gtk.Frame("Misc")

        label = gtk.Label(CONT["extra"])
        label.set_selectable(True)
        frame.add(label)
        frame.show()
        label.show()
        box.pack_start(frame)

        modify = gtk.Button("Modify")
        modify.connect("clicked",lambda x:self.modify_scriptbook(CONT))
        vbox.pack_start(modify,False,False)
        modify.show()
        button = gtk.Button("Close")
        button.connect("clicked",self.delete_event2,"show window2")
        vbox.pack_start(button,False,False)
        button.show()

        vbox.show()
        scrolled_area.show()
        box.show()
        self.show_scriptbook_window.show()
        self.window.quit()
        

  
    def temp_scriptbook_modify(self,key,item):
        self.temp_scriptbook[key] = item

    def modify_scriptbook(self,scriptbook = None):
        if self.show_scriptbook_window:self.show_scriptbook_window.destroy()
        if scriptbook:
            for key, item in scriptbook.iteritems():
                if item != "":
                    self.temp_scriptbook_modify(key,item)
        self.modify_window = gtk.Window()
        if scriptbook:title = "Modify scriptbook"
        else: title = "Add new scriptbook"
        self.modify_window.set_title(title)
        self.modify_window.set_position(gtk.WIN_POS_CENTER)
        self.modify_window.set_size_request(600,500)
        vbox = gtk.VBox()
        self.modify_window.add(vbox)

        scrolled_area = gtk.ScrolledWindow()
        scrolled_area.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
        vbox.pack_start(scrolled_area,True)

        box = gtk.VBox()
        scrolled_area.add_with_viewport(box)



        frame = gtk.Frame("Name")
        name_entry = gtk.Entry()
        if scriptbook:name_entry.set_text(scriptbook["name"])
        frame.add(name_entry)
        frame.show()
        name_entry.show()
        box.pack_start(frame,False,False)

        frame = gtk.Frame("Url (e.g. http://www.google.com)")
        url_entry = gtk.Entry()
        if scriptbook:url_entry.set_text(scriptbook["url"])
        frame.add(url_entry)
        frame.show()
        url_entry.show()
        box.pack_start(frame,False,False)

        frame = gtk.Frame("Code")
        code = gtk.TextView()
        code.set_editable(True)
        self.codebuffer = code.get_buffer()
        if scriptbook:self.codebuffer.set_text(scriptbook["code"])
        scrolled_area2 = gtk.ScrolledWindow()
        scrolled_area2.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
        scrolled_area2.add_with_viewport(code)
        scrolled_area2.set_size_request(500,280)
        frame.add(scrolled_area2)
        scrolled_area.show()
        box.show()
        scrolled_area2.show()
        code.show()
        frame.show()

        box.pack_start(frame,False,False)
        frame = gtk.Frame("Misc.")
        misc_entry = gtk.Entry()
        if scriptbook:misc_entry.set_text(scriptbook["extra"])
        frame.add(misc_entry)
        frame.show()
        misc_entry.show()
        box.pack_start(frame,False,False)
        button = gtk.Button("Cancel")
        button.connect("clicked",self.modify_window_destroy)
        vbox.pack_end(button,False,False)
        button.show()

        button = gtk.Button("Apply")
        button.connect("clicked",self.add_scriptbook,name_entry,url_entry,misc_entry)
        vbox.pack_end(button,False,False)
        button.show()
        vbox.show()
        self.modify_window.show()

    def modify_window_destroy(self,widget):
        self.modify_window.destroy()



    def open_url(self,url):
if url:
            try:
                print "Opening '"+url+"' in webbrowser"
                webbrowser.open_new(url)
                self.show_scriptbook_window.destroy()
                gtk.main_quit()
                return 0
            except:
                self.warning("Could not open url in webbrowser!")
        else:
            print"There is no url to open."




    def temp_scriptbook_change(self,entry,item):
        self.temp_scriptbook[item] = entry.get_text()
        for key,item in self.temp_scriptbook.iteritems():
            print key,item


    def add_scriptbook(self,widget,name_entry,url_entry,misc_entry):
        if self.temp_scriptbook["name"] != "" and self.temp_scriptbook["name"] != name_entry.get_text():
            print "removing scriptbook....",self.temp_scriptbook["name"]
            self.remove_scriptbook(None,self.temp_scriptbook["name"])
        self.temp_scriptbook["name"] = name_entry.get_text()
        self.temp_scriptbook["url"] = url_entry.get_text()
        self.temp_scriptbook["code"] = self.codebuffer.get_text(self.codebuffer.get_start_iter(),self.codebuffer.get_end_iter())
        self.temp_scriptbook["extra"] = misc_entry.get_text()

        if self.temp_scriptbook["name"] != "":
            self.SPCRIPTBOOK.add_new_scriptbook(self.temp_scriptbook)
            if self.show_scriptbook_window:self.show_scriptbook_window.destroy()
            if self.window:self.window.destroy()
            if self.modify_window:
                self.modify_window.destroy()
            self.window.destroy()
            MainWindow.__init__(self)
        else:
            self.warning("You can't add a scriptbook with out a name.")


    def warning(self,message,yesno = False):
        warning = gtk.Window()
        warning.set_title("Warning!")
        warning.set_position(gtk.WIN_POS_CENTER)
        box = gtk.VBox(True)
        warning.add(box)
        label = gtk.Label(message)
        box.pack_start(label)
        label.show()
        button = gtk.Button("Ok")
        button.connect("clicked",lambda x:warning.destroy())
        box.pack_start(button,False,False)
        button.show()
        box.show()
        warning.show()
        
    def remove_scriptbook_win(self,data):
        print "Removing scriptbook..."
        self.remove_scriptbook_window = gtk.Window()
        self.remove_scriptbook_window.set_title("Remove scriptbook")
        self.remove_scriptbook_window.set_position(gtk.WIN_POS_CENTER)
        self.remove_scriptbook_window.set_size_request(500,350)
        vbox = gtk.VBox()
        scrolled_area = gtk.ScrolledWindow()
        scrolled_area.set_policy(gtk.POLICY_AUTOMATIC,gtk.POLICY_AUTOMATIC)
        vbox.pack_start(scrolled_area,True)
        box = gtk.VBox()
        scrolled_area.add_with_viewport(box)
        for item in self.SPCRIPTBOOK.get_scriptbooks():
            button = gtk.Button(item)
            button.connect("clicked",self.yes_no,item)
            box.pack_start(button,False,False)
            button.show()
        box.show()
        scrolled_area.show()
        self.remove_scriptbook_window.add(vbox)
        button = gtk.Button("Close")
        button.connect("clicked",lambda x:self.remove_scriptbook_window.destroy())
        vbox.pack_start(button,False,False)
        button.show()
        vbox.show()
        self.remove_scriptbook_window.show()

    def yes_no(self,data,scriptbook):
        self.yes_no_window = gtk.Window()
        self.yes_no_window.set_title("Are you sure?")
        self.yes_no_window.set_position(gtk.WIN_POS_CENTER)
        Vbox = gtk.VBox()
        self.yes_no_window.add(Vbox)
        label = gtk.Label("Do you realy want to remove'"+scriptbook+"'?")
        Vbox.pack_start(label)
        label.show()
        hbox = gtk.HBox()
        Vbox.pack_start(hbox)
        button = gtk.Button("Yes")
        button.connect("clicked",self.remove_scriptbook,scriptbook)
        hbox.pack_start(button,True,False)
        button.show()
        button = gtk.Button("No")
        button.connect("clicked",lambda x:self.yes_no_window.destroy())
        hbox.pack_end(button)
        button.show()
        hbox.show()
        Vbox.show()
        self.yes_no_window.show()

    def remove_scriptbook(self,data,scriptbook):
        self.SPCRIPTBOOK.remove_scriptbook(scriptbook)
        if self.remove_scriptbook_window:self.remove_scriptbook_window.destroy()
        if self.yes_no_window:self.yes_no_window.destroy()
        self.window.destroy()
        if self.modify_window:self.modify_window.destroy()
        MainWindow.__init__(self)

   def delete_event(self,widget,data = None):
        if data == "show window":
            self.show_scriptbook_window.destroy()
            
        else:
            self.window.destroy()
        gtk.main_quit()
        return 0

    def delete_event2(self,widget,data = None):
        if data == "show window2":
            self.show_scriptbook_window.destroy()
        return 0

def main():
    gtk.main()
    return 0
if "-h" in sys.argv:
    print_help()
else:
    if __name__ == "__main__":
        MainWindow()
        main()
Název: Re: Užitečné skripty
Přispěvatel: klepeto 26 Října 2009, 20:59:43
v tom skripte od krchyho mi vyhadzuje chybu :
Kód: [Vybrat]
line 61: syntax error: unexpected end of fileneviete cim to je?
Název: Re: Užitečné skripty
Přispěvatel: Firzen 26 Října 2009, 23:08:24
v tom skripte od krchyho mi vyhadzuje chybu :
Kód: [Vybrat]
line 61: syntax error: unexpected end of fileneviete cim to je?
Tím, že jsi skript zkopíroval špatně a není celý. Zkus to znovu. :)
Název: Re: Užitečné skripty
Přispěvatel: klepeto 27 Října 2009, 00:00:30
Hej to bolo ono diky moc.   ;D
Název: Re: Užitečné skripty
Přispěvatel: 1arash 28 Ledna 2010, 17:17:49
Ahoj..
Prevod suboru.Celkom uzitocny script z flv to mp3 z youtube - otestovane aj z xvid - to mp3.

Citace
#!/bin/sh
# this script should convert files from FLV to WAV and then to MP3
echo " "
echo "  Welcome to FLV to MP3 converter!  version 0.1"
echo " "
infile_name="$@"
# exit if the user did not enter anything:
if [ -z "$infile_name" ]; then
    echo " "
    echo "You did not tell me the file name, so I will exit now."
    echo " "
    exit
fi
echo " "
ffmpeg -i "$infile_name" -acodec pcm_s16le -ac 2 -ab 128k -vn -y "${infile_name%.flv}.wav"
lame --preset cd "${infile_name%.flv}.wav" "${infile_name%.flv}.mp3"
rm "${infile_name%.flv}.wav"
echo " "
echo "OK. I'm done! Have fun!"
echo " "
exit

Mozno treba doinstalovat ..
sudo apt-get install ffmpeg lame
sudo apt-get install ecasound mpg123 lame ffmpeg

Název: Re: Užitečné skripty
Přispěvatel: LuciusMare 19 Března 2010, 15:35:10
Koukám že jsem si uvědomil svojí blbost pozdě, než jsem to smazal, ale:
1) Rekurzivní funkce?
2) Nevěděl jsem že to test umí
3) Bohužel, jsi velmi blízko.
edit: No, niceméně děkuju :)
Název: Re: Užitečné skripty
Přispěvatel: kratero 15 Dubna 2010, 16:22:24
Edit: Smazáno, reklama. Příště ban.
Tadeáš Pařík
Název: Moje prvotinky
Přispěvatel: palko 16 Října 2010, 18:33:16
Ahoj, pokud fotíte do rawu, může se hodit

Kód: [Vybrat]
#!/bin/bash
echo -n "Jmeno adresare: "
read nazev_adr
rename 'y/A-Z/a-z/' * #prevede velka pismena na mala
ls *jpg | awk -F. '{ print $1 ".orf" >"seznam.fotek" }' #vytvori seznam kopii souboru jpg
for jmeno in $(<seznam.fotek); do #dosazuje polozku po polozce (nazev souboru) do promene jmeno
cp $jmeno $HOME/Obrázky/Fotografie/raw/
done
mkdir $HOME/Obrázky/Fotografie/archiv/$nazev_adr
cp *jpg $HOME/Obrázky/Fotografie/archiv/$nazev_adr/
rm *
echo "Hotovo :o)"
exit 0

Připojím kartu CF promažu (jpg) co se nepovedlo a spustím skript  :) překopíruje jpg a jejich dvojníky orf.
Edit: prikaz rename 'y/A-Z/a-z/' * nefunguje na připojené CF kartě, jinde na disku ano.  ???
Edit:: nefunguje, protože FAT nerozlišuje mezi velkými/malými písmeny, takže ještě jednou:
Kód: [Vybrat]
#!/bin/bash
echo -n "Jmeno adresare: "
read nazev_adr
ls *JPG | awk -F. '{ print $1 ".ORF" >"seznam.f" }' #vytvori seznam kopii souboru jpg
for jmeno in $(<seznam.f); do #dosazuje polozku po polozce (nazev souboru) do promene soubor
cp $jmeno $HOME/Obrázky/Fotografie/raw/
done
mkdir $HOME/Obrázky/Fotografie/archiv/$nazev_adr
cp *JPG $HOME/Obrázky/Fotografie/archiv/$nazev_adr/ && rm *JPG *ORF *f
cd $HOME/Obrázky/Fotografie/archiv/$nazev_adr
rename 'y/A-Z/a-z/' *
cd $HOME/Obrázky/Fotografie/raw
rename 'y/A-Z/a-z/' *
echo "Hotovo :o)"
exit 0

Fotky máme roztříděné, a potřebujeme najít raw a znovu upravit. Přidal jsem si tento skript do Thunaru - vlastní kontextové menu.

Kód: [Vybrat]
#!/bin/bash
jmeno=$(basename "$1" .jpg)
jmeno=$jmeno".orf"
if [ -e "$HOME/Obrázky/Fotografie/raw/$jmeno" ] ; then
ufraw $HOME/Obrázky/Fotografie/raw/$jmeno
else
exit 1
fi
exit 0


Skript pro vytvoření obrazu ISO:

Kód: [Vybrat]
#!/bin/bash
#vytvori obraz iso
#createiso.sh nazev_souboru
echo "vytvarim obraz ISO..."
echo ""
dd if=/dev/cdrom1 of=/home/palko/iso/$1.iso
exit 0

Nevíte kde najít název vloženého CD (nahradit $1)  ???


Vlastní kontextové menu pro thunar:

Vytvoří tapetu na mobil :)

Kód: [Vybrat]
convert -resize 176 %n $HOME/telefon/up/%n

Připojí obraz ISO:

Kód: [Vybrat]
gksu "mount "$1" /home/palko/ViCD -o loop"
Název: Re: Užitečné skripty
Přispěvatel: arrange 21 Října 2010, 12:41:01
Užitečný skriptík pro časté výpadky serveru ubuntu.cz  ;)
Může běžet na pozadí a upozornit (vykřičník na liště), jakmile je server znovu funkční...
Kód: [Vybrat]
while :; do wget --timeout=5 --tries=2 -O /dev/null forum.ubuntu.cz && { zenity --notification --text="good"; break; }; sleep 5m; done
Název: Re: Užitečné skripty
Přispěvatel: arrange 21 Října 2010, 21:04:15
...kdy se uz konecne lidi naucite delat:
...
...až budeme chtít nejdřív spát, a potom až něco provádět, a ne naopak...  :)
Ale díky za připomenutí.

EDIT: ještě lepší by tedy bylo
Kód: [Vybrat]
while ! wget --timeout=5 --tries=2 -O /dev/null forum.ubuntu.cz; do sleep 5m; done; zenity --notification --text="good"
Název: Re: Užitečné skripty
Přispěvatel: mk33 30 Října 2010, 19:43:15
Překlad cizích slovíček a vygenerování "slovníčku".

používá se slovník stardict (jeho konzolová verze program sdcv) a sed, který nám upraví překlad tak, aby šel použít v Latexu.

Kód: [Vybrat]
#!/bin/bash

rm vystup2
rm vystup
rm vstup

if [ "$#" -eq 0 ]; then
echo "spatny pocet parametru"
else

if [ "$2" == "-s" ]; then
cat $1 | sort -u > vstup
else
cat $1 > vstup
fi

cat vstup | while read radek; do
sdcv "$radek" >> vystup
done
fi

sed -e "/GNU/d;/similar to /d;
/FDL/d;
s/\[.*\]$//g;
s/-->.*/\\\newline \\\noindent \\\textbf{&}/g;
s/-->//g;
/^$/d;
s/.*:.*/\\\texttt{\[&\]}/g;
s/   .*/&;/g;
s/ ;/;/g
s/.*:$/\[&\]/" vystup > vystup2

Ukázka pdf:
http://www.mk33.ic.cz/upload/10-10-30-19-37-20-slovicka.png (http://www.mk33.ic.cz/upload/10-10-30-19-37-20-slovicka.png)
Název: Re: Užitečné skripty
Přispěvatel: min25 17 Ledna 2011, 21:17:40
Zkusil jsem SPCRIPTBOOK.py od petrakise ale vždy skončí s:
Kód: [Vybrat]
./spcriptbook.py
  File "./spcriptbook.py", line 468
    def delete_event(self,widget,data = None):
                                             ^
IndentationError: unindent does not match any outer indentation level
Neví někdo kde hledat chybu? Skript jsem zkoušel uložit více způsoby, ale se stejným výsledkem. Používám Kubuntu 10.10
Název: Re: Užitečné skripty
Přispěvatel: GdH 17 Ledna 2011, 23:10:39
Zkusil jsem SPCRIPTBOOK.py od petrakise ale vždy skončí s:
Kód: [Vybrat]
./spcriptbook.py
  File "./spcriptbook.py", line 468
    def delete_event(self,widget,data = None):
                                             ^
IndentationError: unindent does not match any outer indentation level
Neví někdo kde hledat chybu? Skript jsem zkoušel uložit více způsoby, ale se stejným výsledkem. Používám Kubuntu 10.10

Na řádek 468 přidej na začátek jednu mezeru, je to špatně odsazené.
Název: Re: Užitečné skripty
Přispěvatel: min25 18 Ledna 2011, 19:32:11
Zkusil jsem SPCRIPTBOOK.py od petrakise ale vždy skončí s:
Kód: [Vybrat]
./spcriptbook.py
  File "./spcriptbook.py", line 468
    def delete_event(self,widget,data = None):
                                             ^
IndentationError: unindent does not match any outer indentation level
Neví někdo kde hledat chybu? Skript jsem zkoušel uložit více způsoby, ale se stejným výsledkem. Používám Kubuntu 10.10

Na řádek 468 přidej na začátek jednu mezeru, je to špatně odsazené.
Díky za pomoc K+
Název: Re: Užitečné skripty
Přispěvatel: starenka 20 Ledna 2011, 23:22:16
Nedavno jsem tunil svuj skript na ukladani pracne nabastlenejch onelineru v bashi (nebo cemkoliv jinym), tak si dejte. (sjedte dalsi moje gisty, jestli mate zajem)

https://gist.github.com/780868
Název: Re:Užitečné skripty
Přispěvatel: otaj 25 Prosince 2011, 07:46:17
Jéé, koukám, jak dlouho je to tu mrtvý, a jak si tu všichni přidávají své bash skripty a tak budu originální a přidám svoji jednoduchou php funkci. (jednu z mála za kterou se úplně nestydím)

funkce je simulací cronu, na serverech, které cron nepodporují nebo nepovolují(můžete aplikovat například pokud máte doménu na těch free serverech typu ic-cz apod.)

nezastřelte mě za odsazování, takový věci většinou nevedu (ale už se lepším!)
k použití, data jsou uložena v tabulce "cron", přikládám exportovaný sql soubor mé tabulky.
path je cesta k souboru, který se má spustit, lused je datum posledniho spusteni (pri prvnim sypani dat do tabulky nemusite zadavat zadnou hodnotu), circle je pocet sekund, po kolika se ma akce opakovat, again má tři různé možnosti "N", "Y", "S-XX" (kde XX je nějaké číslo). Značí to, jestli se má provést opakování více těch příkazů ve chvíli, kdy bylo zjištěno, že doba od posledního spuštění je minimálně dvojnásobná, než hodnota circle. Jestli je nastavena na N, pak se příkaz provede maximálně jednou, jestli je nastavena na Y, pak se provde tolikrát, kolikrát uplynula perioda circle, a jestli je nastavena na S-XX, pak se provede vicekrat maximalne do cisla XX

doporucuji tuhle funkci hodit na zacatek kazdeho souboru, aby se spustila pri kazdem pristupu na stranku - pri trochu vetsim trafficu to ma sanci simulovat cron docela dobre.

asi ten navod budu prepisovat, trochu se mi pripozdiva (dve v noci) a minulou noc jsem nespal, takze doufam, ze jste to pochopili.

P.S.: Stastne a vesele..:)

Kód: [Vybrat]
function cron(){

$cr=mysql_query("SELECT * FROM cron");

$ord=Array("time"=>Array(),"path"=>Array());

while ($cron=mysql_fetch_array($cr)){

$cron["lused"]=strtotime($cron["lused"]);

$now=time()-$cron["lused"];

if ($now>=$cron["circle"]&&$cron["circle"]!=0){

if ($cron["again"]=="Y"){

for ($i=1;$i<=($now/$cron["circle"]);$i++) {

$ord["time"][]=$cron["lused"]+($cron["circle"]*$i);

$ord["path"][]=$cron["path"];}}

elseif (strpos($cron["again"],"S")!==false){

$much=explode("-",$cron["again"]);

if ($much[1]>($now/$cron["circle"])) $muc=($now/$cron["circle"]);

else $muc=$much[1];

for ($i=1;$i<=$muc;$i++){

$ord["time"][]=$cron["lused"]+($cron["circle"]*$i);

$ord["path"][]=$cron["path"];}}

else{

$ord["time"][]=$cron["lused"]+($cron["circle"]);

$ord["path"][]=$cron["path"];}}}

array_multisort($ord["time"],$ord["path"]);

foreach($ord["path"] as $path){include($path);}

reset($ord);

array_unique($ord["path"]);

foreach($ord["path"] as $path){

mysql_query("UPDATE cron SET lused=NOW() WHERE path='".mysql_real_escape_string($path)."'");}}

Kód: [Vybrat]
CREATE TABLE IF NOT EXISTS `cron` (
  `path` text NOT NULL,
  `lused` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `circle` int(10) NOT NULL,
  `again` varchar(10) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Dumping data for table `cron`
--

INSERT INTO `cron` (`path`, `lused`, `circle`, `again`) VALUES
('cron/unban.php', '2011-12-13 02:59:28', 86400, 'N'),
('cron/unact.php', '2011-12-13 03:10:04', 10, 'N'),
('cron/backup.php', '2011-12-13 02:59:28', 86400, 'N');
Název: Re:Užitečné skripty - IP kalkulátor
Přispěvatel: _Děda_ 09 Června 2015, 12:04:31
Zdravím,
po dlouhé době bych rád přidal jeden skriptík. Jedná se o jednoduchý kalkulátor IP adres.

IPCalc - terminál:
http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc.sh (http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc.sh)
(http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/screan-menu.png) (http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc.sh)

IPCalc - Zenity:
http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc-zenity.sh (http://www.jan.jkelektronik.cz/data_files/bash/ip_calc/ipcalc-zenity.sh)

Případně pomoc v příkazové řádce pro úplné začátečníky:
Kód: [Vybrat]
#Stažení
wget http://www.jan.jkelektronik.cz/data_files/bash/ip_calc.tar.gz
#Rozbalení
gzip -d ip_calc.tar.gz
tar xpfv ip_calc.tar
#Spuštění v terminálu
sh ip_calc/ipcalc.sh
#Spuštění v grafickém prostředí Zenity
sh ip_calc/ipcalc-zenity.sh
#Smazání již nepotřebného balíku
rm ip_calc.tar

Můžete se podívat i na další skriptíky, třeba i něco dalšího časem ještě přibude a některé snad ještě i budu vylepšovat  :)
http://www.jan.jkelektronik.cz/data_files/bash/ (http://www.jan.jkelektronik.cz/data_files/bash/)
Název: Re:Užitečné skripty
Přispěvatel: Myrmica 09 Června 2015, 13:50:43
Protože mě už nebavilo při každé instalaci a některých aktualizací stále ručně nastavovat zapnutí klávesy NUMLOCK v přihlašovací obrazovce, tak jsem si pro to připravil následující script (proboha nekamenujte mě za to jak je napsán, jsem rád, že funguje) :
Kód: [Vybrat]
#!/bin/bash
# Make sure only root can run our script
if [ "$(id -u)" != "0" ]; then
   echo "Skript musí být spuštěn s právy uživatele root" 1>&2
   exit 1
fi
# search file '50-unity-greeter.conf$'
file1=$(locate -r '50-unity-greeter.conf$');
# test for command to turn numlock
if grep "greeter-setup-script=/usr/bin/numlockx on"  $file1; then
  echo "Zdá se, že pro zapnutí NUMLOCK v přihlašovací obrazovce je vše připraveno.";
else
# append command to file
  echo "greeter-setup-script=/usr/bin/numlockx on">>$file1;
  echo "Zapnutí NUMLOCK v přihlašovací obrazovce je připraveno.";
fi
echo "Restartujte počítač";
Skript mám odzkoušený pro 14.04, a nejspíše bude fungovat i na 15.04.
Skript se spouští z příkazové řádky pod právy root.
Název: Re:Užitečné skripty
Přispěvatel: PepanB 25 Listopadu 2015, 21:06:42
Ahoj, neví někdo o skriptu, který by po updatu jádra smazal staré verze včetně konfiguračních souborů? Dosud používám výborný Ubuntu-tweak, ale když pominu stagnující vývoj tak při instalaci se natáhne spousta nepotřebných věcí a používám z tohoto programu stejně jenom funkci čištění.
Název: Re:Užitečné skripty
Přispěvatel: GdH 25 Listopadu 2015, 21:41:14
Ahoj, neví někdo o skriptu, který by po updatu jádra smazal staré verze včetně konfiguračních souborů? Dosud používám výborný Ubuntu-tweak, ale když pominu stagnující vývoj tak při instalaci se natáhne spousta nepotřebných věcí a používám z tohoto programu stejně jenom funkci čištění.

Já si vystačím s tímto aliasem:
Kód: [Vybrat]
alias arm="apt-mark showmanual | egrep '^linux-(image|headers)' | xargs sudo apt-mark auto ;  sudo apt-get autoremove"