Prosíme přihlašte se nebo zaregistrujte.

Přihlašte se svým uživatelským jménem a heslem.
Vaše pomoc je stále potřeba!

Novinky: Děkujeme všem návštěvníkům fóra, kteří ochotně radí ostatním. Vaše práce je velmi potřebná a vážíme si jí.

Autor Téma: Užitečné skripty  (Přečteno 38373 krát)

Zax

  • Člen
  • **
  • Příspěvků: 116
  • Karma: +20/-7
  • Titul: Uhrovitý pubescent
    • Zobrazit profil
    • Lukáš Klika.cz - můj blog
Re: Užitečné skripty
« Odpověď #25 kdy: 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
Celý svět se pomalu ale jistě řítí do /dev/null
Moje sestava: AMD Athlon(tm) 64 Processor 3500+ | 2 GB RAM | nVidia GeForce 6600 GT | Ubuntu 8.10 | Gnome 2.22.3 | Linux 2.6.24-19-generic
Prosím, nevykejte mi :)

Martin - ViPEr*CZ*

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 3046
  • Karma: +145/-18
    • Zobrazit profil
    • http://vipersoftware.net
Re: Užitečné skripty
« Odpověď #26 kdy: 16 Leden 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.  ;)
Open source is gold way... Mint 17.2, Debian 8.1 Jessie| Ubuntu Wiki (návody) | Google vyhledávač | Qt4 návody

Martin 'Želva' Malý

  • Závislák
  • ****
  • Příspěvků: 2438
  • Karma: +252/-43
  • Zalezlej v krunýři
    • Zobrazit profil
    • Želvův zápisník
Re: Užitečné skripty
« Odpověď #27 kdy: 20 Leden 2009, 20:07:10 »
Hromada skriptů je na: http://www.linuxsoft.cz/
Osobní počítače jsou nanic a opravdu nikdy nedělají to, co se po nich chce. Fakt. I když na něm třeba běží Debian, Ubuntu, Arch, Widle, Mac, je to skoro furt to samé... :-(

Pokud mi dáváte zápornou karmu, budu rád, když mi napíšete proč, abych aspoň věděl, jak jsem vám uškodil. ;-)

Krchy

  • Návštěvník
  • *
  • Příspěvků: 14
  • Karma: +1/-0
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #28 kdy: 25 Leden 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
« Poslední změna: 25 Leden 2009, 14:51:43 od Krchy »

arrange

  • Závislák
  • ****
  • Příspěvků: 4032
  • Karma: +473/-15
  • "jdu s hlavou vztyčenou..."
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #29 kdy: 06 Únor 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
http://www.openstreetmap.org - mapy celého světa "wiki style"

petrakis

  • Stálý člen
  • ***
  • Příspěvků: 519
  • Karma: +144/-1
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #30 kdy: 23 Říjen 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.




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()
« Poslední změna: 23 Říjen 2009, 08:12:50 od petrakis »
Znalosti ⇛ Linux: Pokročilý ┃ Programování: Pokročilý ┃ Angličtina: Pokročilý
Systém: Ubuntu 10.04 32-bit (en_US.utf8)
Specifikace⇛ Intel Core 2 E8400 3.00GHz │ RAM 3072 MiB │ DG31PR INTEL - Intel DG31PR Grafické karty: nVidia NV44 [GeForce 6200 TurboCache(TM)] [10DE:161] Sítě: Ethernet: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller [10EC:8168]

klepeto

  • Návštěvník
  • *
  • Příspěvků: 83
  • Karma: +5/-1
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #31 kdy: 26 Říjen 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?
Ubuntu 10.4. LTS

Firzen

  • Závislák
  • ****
  • Příspěvků: 1287
  • Karma: +83/-28
    • Zobrazit profil
    • Beroot
Re: Užitečné skripty
« Odpověď #32 kdy: 26 Říjen 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. :)
AMD Phenom II X6 1100T@3,3GHz, Gigabyte GeForce GT 430 1GiB, 8GiB RAM, 1TiB SATA3 HDD, Nokia N900
OS: Debian 6.0 Squeeze, Maemo 5
Citace
Prosintě ty jsi takový zkušený vývojář - co mám dělat, když nevím, jako něco udělat? :D

klepeto

  • Návštěvník
  • *
  • Příspěvků: 83
  • Karma: +5/-1
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #33 kdy: 27 Říjen 2009, 00:00:30 »
Hej to bolo ono diky moc.   ;D
Ubuntu 10.4. LTS

1arash

  • Člen
  • **
  • Příspěvků: 125
  • Karma: +5/-3
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #34 kdy: 28 Leden 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

Základní příkazy podle abecedy
Instalacia programov:
apt-cache search balik   sudo apt-get install sudo apt-get remove sudo apt-get clean sudo passwd root          se meni heslo  Alt+F2 a gksudo nautilus           instalovanie v terminali  apt-cache search balik         Hledá zadaný balík. apt-cache show balik           Pokracovanie -v profile arash@jabber.cz

LuciusMare

  • Závislák
  • ****
  • Příspěvků: 1752
  • Karma: +118/-45
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #35 kdy: 19 Březen 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 :)
« Poslední změna: 19 Březen 2010, 15:43:59 od LuciusMare »
Citace
<Firzen> tak teď budu Číňan
<Firzen> tak uvidíme :D
Jabber: LuciusMare (zkroucenina) jabbim (tecka) cz

kratero

  • Návštěvník
  • *
  • Příspěvků: 2
  • Karma: +1/-1
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #36 kdy: 15 Duben 2010, 16:22:24 »
Edit: Smazáno, reklama. Příště ban.
Tadeáš Pařík
« Poslední změna: 15 Duben 2010, 16:29:22 od Tadeáš Pařík »

palko

  • Návštěvník
  • *
  • Příspěvků: 6
  • Karma: +1/-0
    • Zobrazit profil
Moje prvotinky
« Odpověď #37 kdy: 16 Říjen 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"
« Poslední změna: 19 Říjen 2010, 21:22:34 od palko »

arrange

  • Závislák
  • ****
  • Příspěvků: 4032
  • Karma: +473/-15
  • "jdu s hlavou vztyčenou..."
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #38 kdy: 21 Říjen 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
http://www.openstreetmap.org - mapy celého světa "wiki style"

arrange

  • Závislák
  • ****
  • Příspěvků: 4032
  • Karma: +473/-15
  • "jdu s hlavou vztyčenou..."
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #39 kdy: 21 Říjen 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"
« Poslední změna: 22 Říjen 2010, 09:52:28 od arrange »
http://www.openstreetmap.org - mapy celého světa "wiki style"

mk33

  • Člen
  • **
  • Příspěvků: 300
  • Karma: +21/-2
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #40 kdy: 30 Říjen 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
« Poslední změna: 30 Říjen 2010, 22:14:59 od Premet »
začínám tak trpělivost a pevné nervy :-) since  21. Listopad 2006
-------------------------------------------------------------------------
|Aopen MX4SGI-4DN2|P4 2,8GHz HT|2x512MB RAM|ATI 9550|Linux Mint 9 Isadora|  |Asus P4B533|P4 1,8GHz|3x256 MB RAM|ATI 7500|Ubuntu 7.04|  |IBM Thinkpad T40p|Ubuntu 9.04|  |Lenovo Thinkpad T61|Linux Mint 9 Isadora|Lenovo Thinkpad T410|Linux Mint 13

min25

  • Člen
  • **
  • Příspěvků: 432
  • Karma: +20/-19
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #41 kdy: 17 Leden 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

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 2990
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re: Užitečné skripty
« Odpověď #42 kdy: 17 Leden 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é.

min25

  • Člen
  • **
  • Příspěvků: 432
  • Karma: +20/-19
    • Zobrazit profil
Re: Užitečné skripty
« Odpověď #43 kdy: 18 Leden 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+

starenka

  • Závislák
  • ****
  • Příspěvků: 1278
  • Karma: +139/-15
  • Karma: plynová [zapalovač] [hasičák]
    • Zobrazit profil
    • /home/starenka
Re: Užitečné skripty
« Odpověď #44 kdy: 20 Leden 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
mojenka | blozinek v2 | starej blozinek | krotim hady za penize | UJ! Kalužátor

Debian testing vrní v Thinkpadu X200/bedně/EEE 900a, MasoX Tiger v lampe

otaj

  • Člen
  • **
  • Příspěvků: 131
  • Karma: +11/-1
  • Eternal Wanderer
    • Zobrazit profil
Re:Užitečné skripty
« Odpověď #45 kdy: 25 Prosinec 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');

_Děda_

  • Návštěvník
  • *
  • Příspěvků: 25
  • Karma: +2/-0
    • Zobrazit profil
Re:Užitečné skripty - IP kalkulátor
« Odpověď #46 kdy: 09 Červen 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


IPCalc - Zenity:
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/
« Poslední změna: 09 Červen 2015, 12:57:36 od _Děda_ »

Myrmica

  • Závislák
  • ****
  • Příspěvků: 1652
  • Karma: +158/-9
    • Zobrazit profil
    • MYRMICA
Re:Užitečné skripty
« Odpověď #47 kdy: 09 Červen 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.
Stolní strojek: OS– UBUNTU 16.04 x86_64, MB ASUS P8 Z68-V/GEN3, Intel® Core™ i5-3470 CPU @ 3.20GHz × 4 , 16GiB DDR3, GeForce GTX 670...
Notebook: ASUS U53Jc OS– UBUNTU 16.04 x86_64, Windows 7, Processor – Intel Core i5-460M (2,53 GHz), Graphics – switchable NVIDIA GeForce 310M and Intel GMA HD

PepanB

  • Návštěvník
  • *
  • Příspěvků: 5
  • Karma: +1/-0
    • Zobrazit profil
Re:Užitečné skripty
« Odpověď #48 kdy: 25 Listopad 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í.

GdH

  • Moderátor
  • Závislák
  • *****
  • Příspěvků: 2990
  • Karma: +480/-17
    • Zobrazit profil
    • GdH-Notes
Re:Užitečné skripty
« Odpověď #49 kdy: 25 Listopad 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"
« Poslední změna: 26 Listopad 2015, 12:18:41 od GdH »