Kirjoittaja Aihe: Pienet näppärät scriptit (bash, python, perl yms.)  (Luettu 113516 kertaa)

Melmacian

  • Käyttäjä
  • Viestejä: 868
  • Ubuntu Hardy
    • Profiili
Ideana on tosiaan kerätä tähän ketjuun erinäisiä pieniä elämää helpottavia scriptejä. Tälläisiä ketjuja löytyy jo englanninkielisiltä foorumeilta, joten ajattelin, että olisi hauska perustaa vastaava tännekkin.

Eli heitelkääpä sellaisia pikku scriptejä tai aliaksia, jotka ovat pysyneet käytössä pidempään kuin sen ensimmäisen kokeilu kerran.

Heitänpä omat helmeni. Osa on löydetty jostain ja osa on itse tehtyjä.
/usr/bin/extall
Koodia: [Valitse]
#!/bin/bash

# Extract files from any archive
# Usage: extall <archive_name>

ex() {
       if [ -f "$1" ] ; then
               case "$1" in
                       *.tar.bz2) tar xjvf "$1" ;;
                       *.tar.gz) tar xzvf "$1" ;;
                       *.bz2) bunzip2 "$1" ;;
                       *.rar) rar x "$1" ;;
                       *.gz) gunzip "$1" ;;
                       *.tar) tar xvf "$1" ;;
                       *.tbz2) tar xjvf "$1" ;;
                       *.tgz) tar xzvf "$1" ;;
                       *.zip) unzip "$1" ;;
                       *.Z) uncompress "$1" ;;
                       *.7z) 7z x "$1" ;;
                       *) echo "'$1' cannot be extracted via
$(basename "$0")" ;;
               esac
       else
               echo "'$1' is not a valid file"
       fi
}

for i in "$@"; do ex "$i"; done
Tämän löysin Ubuntuforums.orgista. Tämän avulla pystyy purkamaan lähes minkä tahansa paketin yhdellä komennolla. Argumenteiksi voidaan antaa useita eri paketteja. Kätevää, ainakin itselläni on ollut suuria vaikeuksia muistaa miten bz2-paketit aukeaa yms.

/usr/bin/video2avi
Koodia: [Valitse]
#!/bin/bash

# Käyttö: video2avi <videotiedosto>

BITRATE=1200

video2avi() {
        if [ -f "$1" ] ; then
                  mencoder "$1" -ovc xvid -xvidencopts pass=1 -oac mp3lame -lameopts vbr=3 -o /dev/null
                  mencoder "$1" -ovc xvid -xvidencopts pass=2:bitrate=$BITRATE -oac mp3lame -lameopts vbr=3 -o "$1.avi"
        else
                echo "'$1' is not a valid file"
        fi
}
for i in "$@"; do video2avi "$i"; done
Scripti joka muuntaa videotiedostoja XviD-pakatuiksi avi-tiedostoiksi. Tein tämän digikamerani videoita varten jotka ovat quicktime-pakattuja. XviD-videot toimivat paljon paremmin Linuxissa ja ovat myös kooltaan vain kymmenyksen  alkuperäisestä. Kuvanlaatu ei tässä tapauksessa juurikaan laske.


Joskus tuli tehtyä tälläinen scripti kuvien kutistamiseen internet jakelua varten:
http://www.suuronen.org/kutista
Edelleenkin on aktiivisessa käytössä.


Aliaksia:
Koodia: [Valitse]
# Näyttää ip:n
alias myip='ifconfig eth0|grep inet|cut -d : -f2|cut -d " " -f1'
# Näyttää eniten cpu/muistia käyttävät sovellukset
alias maxcpu="ps -e -o pcpu,cpu,nice,state,cputime,args --sort pcpu | sed '/^ 0.0 /d'"
alias maxmem='ps -e -o rss=,args= | sort -b -k1,1n | pr -TW$COLUMNS'



« Viimeksi muokattu: 01.07.07 - klo:16.23 kirjoittanut Epeli »

eliasj

  • Käyttäjä
  • Viestejä: 4075
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #1 : 01.07.07 - klo:19.02 »
Minun aliaksiani:
Koodia: [Valitse]
# Kirjoittaa ISOn cd:lle (kiitos janne tästä)
alias writecd='sudo cdrecord -v -pad -dev ATAPI:/dev/hdc speed=8'

# Kirjautuu ulos
alias ulos='killall -u elias'

# Apt-get lyhennyksiä
alias poista='sudo apt-get --purge remove'
alias asenna='sudo apt-get install'
alias siivoa='sudo apt-get clean'
alias vililikku

MikkoJP

  • Käyttäjä
  • Viestejä: 1148
  • iBook 600 MHz + Debian 4.0
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #2 : 10.07.07 - klo:14.27 »
Tekstitiedoston sanat esiintymistiheyden mukaan:

Koodia: [Valitse]
#!/bin/bash
#
# luettelo tekstitiedoston sanoista niiden esiintymismäärien mukaan järjestettynä
#
# käyttö: topwords tiedostonnimi
#
cat $1 | tr 'A-Z' 'a-z'| tr ' ' '\012'|sort|uniq -c|sort -rn

Jos nyt joku muu tällaista tarvitsee  ;D

.bashrc otteita:

Koodia: [Valitse]

# jotkut ohjelmat lukevat tästä ympäristömuuttujasta oletuseditorin
export EDITOR=/usr/bin/emacs

# seuraavista kotihakemiston alihakemistoista etsitään
# myös käynnistettäviä ohjelmia. Tämä on hyödyllinen esimerkiksi
# omien skriptien kirjoittajalle tai käyttäjän kotihakemistoonsa
# asentamien ohjelmien ajamiseksi (ei tarvitse muistaa polkua).
#
PATH="${PATH}:~/scripts:~/bin"     #lisätään hakemistot ~/scripts
                                              # ja ~/bin polkuun
export PATH

# aliakset helpottavat komentoriviä käyttävän elämää
alias dir='ls -l | more'
alias ll='ls -l'
alias ls='ls --color'
alias df='df -h'

LaTeX luo paljon erilaisia aputiedostoja latoessaan tekstiä. Kun sopiva postscript tai pdf on luotu, ajan seuraavan skriptin putsatakseni hakemiston:

Koodia: [Valitse]
#!/bin/bash

# tässä ei ole mitään varmistuksia, joten älä käytä tätä
# ellet tiedä tarkoin, mitä teet ja missä hakemistossa :-)
#

echo "Poistetaan latex-aputiedostot"
rm *.log
rm *.dvi
rm *.aux
rm *~
rm *.blg
rm *.url
rm *.bbl
rm *.toc

Tuohon voisi tietysti lisätä argumentiksi tiedostonnimen, ettei tulisi turhia tiedostoja poistettua, pelkästään tiedostonnimi.log ja niin edelleen.
« Viimeksi muokattu: 10.07.07 - klo:14.42 kirjoittanut MikkoJP »

Nakkis

  • Käyttäjä
  • Viestejä: 154
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #3 : 10.07.07 - klo:15.48 »
Eihän sitä erkkikään muista kaikkien erilaisten tar.jotain-pakettien purkamista. Tämän pikku skriptin avulla voi purkaa kaikki .tar, .tar.gz ja tar.bz2 tiedostot ilman kryptisiä optioita. Laita tämä vaikkapa /usr/local/bin/untar nimiseen tiedostoon.

Koodia: [Valitse]
#!/bin/bash

TYPE="${1:${#1}-3}"

#If it is not a compressed file tar will deal with it!

[[ "${2}" != "" ]] && [[ -e "${2}" ]] && cd "${2}"

[[ ! -e "${1}" ]] && exit 1

case $TYPE in
        [bB]z2)
                echo "bz2 file"
                tar -jxvf "${1}"
                ;;
        [tT]ar)
                echo "tar file"
                tar -xpvf "${1}"
                ;;
        .[Gg][[Zz])
                echo "gz2 file"
                tar -xpzf "${1}"
                ;;
        *)
                echo "Not a compressed File!"
                ;;
esac
exit 0

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #4 : 10.07.07 - klo:16.01 »
Koodia: [Valitse]
...
rm *.log
rm *.dvi
rm *.aux
rm *~
rm *.blg
rm *.url
rm *.bbl
rm *.toc

Eikös "rm *.log *.dvi *.aux *~ *.blg *.url *.bbl *.toc" olisi kustannustehokkaampi?

Minun näppärimpiin aliaksiini kuului 4DOSsissa/4OS2:ssa aina mcd, joka loi hakemiston ja siirtyi sinne. Nyt zsh:ssa sama on toteutettava funktiona:

Koodia: [Valitse]
mcd () { mkdir -p $* && cd $* }

Tuo ei komentorivivalitsimia siedä :) mutta toimii muuten kuin junan vessa.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #5 : 10.07.07 - klo:17.41 »
Tuo ei komentorivivalitsimia siedä :) mutta toimii muuten kuin junan vessa.

Toimii kuin junan vessa eli p*ska leviää radalle?

Koodia: [Valitse]
$ ls
$ mcd foo bar
mcd:cd: string not in pwd: foo
$ ls
bar  foo

Hakemistoja siis luotiin kaksi eikä kumpaankaan menty sisään. Tuo tosin on helppo korjata.

Koodia: [Valitse]
mcd () { mkdir -p -- "$*" && cd "$*" }

Nyt jos komentorivillä annetaan useampia parametreja niin ne yhdistetään välilyönneillä yhdeksi parametriksi. Varsin näppärää jos halutaan luoda hakemisto jossa on välilyöntejä nimessä. Lisäsin tuohon myös suojauksen komentorivivalitsimia muistuttavien parametrien varalta.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #6 : 10.07.07 - klo:17.55 »
Eihän sitä erkkikään muista kaikkien erilaisten tar.jotain-pakettien purkamista.

Niitähän onkin huimat kolme variaatiota jotka poikkeavat toisistaan yhdellä parametrilla ;)
Lainaus
Koodia: [Valitse]
...
case $TYPE in
        [bB]z2)
                echo "bz2 file"
                tar -jxvf "${1}"
                ;;
        [tT]ar)
                echo "tar file"
                tar -xpvf "${1}"
                ;;
        .[Gg][[Zz])
                echo "gz2 file"
                tar -xpzf "${1}"
                ;;
...

Ei ole kovin loogista että jokainen paketti puretaan eri tavalla ja lisäksi parametrin p käyttäminen aiheuttaa todennäköisesti virheilmoituksia jos pakettia ei pureta root-oikeuksilla ja paketti sisältää jonkun muun käyttäjätunnuksen omistuksessa olevia tiedostoja.

Viimeinen case-ehto lienee myös rikki sillä siinä on avaava hakasulku kaksi kertaa peräkkäin: ".[Gg][[Zz])"

Kannattaa melkein korvata tuo ensimmäisestä Epelin viestistä löytyvällä purkuskriptillä.

Itse käyttäisin purkamiseen seuraavia komentoja:
Koodia: [Valitse]
tar -xvjf "$1"
tar -xvf "$1"
tar -xvzf "$1"

Lisäksi opettelisin ne ulkoa ;)

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #7 : 10.07.07 - klo:18.05 »
Tekstitiedoston sanat esiintymistiheyden mukaan:

Koodia: [Valitse]
#!/bin/bash
#
# luettelo tekstitiedoston sanoista niiden esiintymismäärien mukaan järjestettynä
#
# käyttö: topwords tiedostonnimi
#
cat $1 | tr 'A-Z' 'a-z'| tr ' ' '\012'|sort|uniq -c|sort -rn

Tuossa voi yhdistää tr-komennot yhteen. Lisäksi itse olen tottunut käyttämään \n-merkkiä \012 sijasta.
Koodia: [Valitse]
cat $1 | tr 'A-Z ' 'a-z\n' | sort | uniq -c | sort -rn

Toisaalta sort ja uniq sisältävät myös ignore-case-parametrit. En tosin tiedä osaavatko ne ottaa käytettyä merkistöä huomioon joten niillä ei välttämättä ole siltä osin saavutettavissa mitään lisähyötyä.

Lainaus
Koodia: [Valitse]
echo "Poistetaan latex-aputiedostot"

Kannattaa asentaa rubber. Se helpottaa LaTeX-käännösten tekemistä ja tarjoaa myös parametrin hakemiston siivoamiseen. Se muun muassa osaa kääntää dokumentin tarvittaessa riittävän monta kertaa uudelleen jotta kaikki ristiviittaukset ja hakemistot tulevat numeroiduiksi.

Nakkis

  • Käyttäjä
  • Viestejä: 154
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #8 : 10.07.07 - klo:18.33 »
Eihän sitä erkkikään muista kaikkien erilaisten tar.jotain-pakettien purkamista.

Niitähän onkin huimat kolme variaatiota jotka poikkeavat toisistaan yhdellä parametrilla ;)
Lainaus
Koodia: [Valitse]
...
case $TYPE in
        [bB]z2)
                echo "bz2 file"
                tar -jxvf "${1}"
                ;;
        [tT]ar)
                echo "tar file"
                tar -xpvf "${1}"
                ;;
        .[Gg][[Zz])
                echo "gz2 file"
                tar -xpzf "${1}"
                ;;
...

Ei ole kovin loogista että jokainen paketti puretaan eri tavalla ja lisäksi parametrin p käyttäminen aiheuttaa todennäköisesti virheilmoituksia jos pakettia ei pureta root-oikeuksilla ja paketti sisältää jonkun muun käyttäjätunnuksen omistuksessa olevia tiedostoja.

Viimeinen case-ehto lienee myös rikki sillä siinä on avaava hakasulku kaksi kertaa peräkkäin: ".[Gg][[Zz])"

Kannattaa melkein korvata tuo ensimmäisestä Epelin viestistä löytyvällä purkuskriptillä.

Itse käyttäisin purkamiseen seuraavia komentoja:
Koodia: [Valitse]
tar -xvjf "$1"
tar -xvf "$1"
tar -xvzf "$1"

Lisäksi opettelisin ne ulkoa ;)
Puhut varmasti totta. Löysin tuon skriptin joskus ammoina aikoina ubuntufoorumeilta ja lisäksi Epelin skripti näyttää todellakin paljon paremmalta. ;)

MikkoJP

  • Käyttäjä
  • Viestejä: 1148
  • iBook 600 MHz + Debian 4.0
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #9 : 10.07.07 - klo:21.45 »
Eikös "rm *.log *.dvi *.aux *~ *.blg *.url *.bbl *.toc" olisi kustannustehokkaampi?

Mitä kustannuksia lasket? Säästäähän siinä tietenkin muutamakymmentä tavua kovalevytilaa...

Tuota sinun versiotasi on hankalampi hahmottaa ruudulta, liian helposti eksyy välilyönti väärään paikkaan ja tulee tuhoa.  Mutta toisaalta: tuo menisi aliaksena ihan hyvin.

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #10 : 10.07.07 - klo:23.03 »
Eikös "rm *.log *.dvi *.aux *~ *.blg *.url *.bbl *.toc" olisi kustannustehokkaampi?

Mitä kustannuksia lasket? Säästäähän siinä tietenkin muutamakymmentä tavua kovalevytilaa...

”Kustannustehokas” nyt oli lähinnä vitsi – vaikka käynnistäähän minun versioni rm:n vain kerran ja tekee siis globbauksenkin vain kerran. Siitä voisi jossain tilanteessa olla se etu, että vaikka jokin toinen prosessi tuottaisi tiedostoja samaan aikaan kun skriptiä ajetaan, ne eivät poistuisi.

Tuota sinun versiotasi on hankalampi hahmottaa ruudulta, liian helposti eksyy välilyönti väärään paikkaan ja tulee tuhoa.

Eihän se skriptissä niin haittaa: se tehdään kerran ja testataan, sen jälkeen se vain toimii.
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #11 : 11.07.07 - klo:16.01 »
Eikös "rm *.log *.dvi *.aux *~ *.blg *.url *.bbl *.toc" olisi kustannustehokkaampi?
Tuota sinun versiotasi on hankalampi hahmottaa ruudulta, liian helposti eksyy välilyönti väärään paikkaan ja tulee tuhoa.  Mutta toisaalta: tuo menisi aliaksena ihan hyvin.

Voihan aina tehdä kompromissin... ;)

Koodia: [Valitse]
rm -f --        \ 
        *.log   \
        *.dvi   \
        *.aux   \
        *~      \
        *.blg   \
        *.url   \
        *.bbl   \
        *.toc

Bonuksena komennolle annettavat valitsimet tarvitsee kirjoittaa vain kerran.

Fa1r

  • Käyttäjä
  • Viestejä: 221
  • Reply #1!
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #12 : 15.07.07 - klo:16.18 »
Pakko todeta että "mgronber knows the script-fu" :)

Omalta osaltani on todettava ettei minun skriptejäni voi enää oikein kutsua "näppäriksi" niiden sirpaloituessa pitkin toimintaympäristöä ja kiintolevyjä.

cat last-words | head -n 1
"Oho, täältä löyty tämmönen, mitäköhän tää tekee" :P
What you don't know can hurt you, only you won't know it.
--$(fortune)
Elastisen Linux-biisi

SuperOscar

  • Käyttäjä
  • Viestejä: 3993
  • Ocatarinetabellatsumtsum!
    • Profiili
    • Legisign.org
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #13 : 15.07.07 - klo:18.35 »
Koodia: [Valitse]
$ ls
$ mcd foo bar
mcd:cd: string not in pwd: foo
$ ls
bar  foo

Hakemistoja siis luotiin kaksi eikä kumpaankaan menty sisään.

Eipä ole koskaan tullut vastaan tilannetta, jossa haluaisin luoda kaksi hakemistoa ja siirtyä kumpaankin yhtä aikaa :)
pöytäkone 1, kannettavat 1–3: Debian GNU/Linux 12; pöytäkone 2: openSUSE Tumbleweed; NUC: openSUSE Leap 15.5; RPi 1: FreeBSD 13.2-RELEASE; RPi 2: LibreELEC 11

nebula

  • Käyttäjä
  • Viestejä: 438
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #14 : 21.07.07 - klo:13.14 »
mounttaa imaget /media kansioon :
 Nautilus- scripts:

Koodia: [Valitse]
# Set some script variables
the_image=$1
image_name=`echo $the_image | sed -e 's/\.iso$//;s/\.img$//;s/\.nrg$//'`
if [ "$NAUTILUS_SCRIPT_CURRENT_URI" == "x-nautilus-desktop:///" ]; then
image_path=$HOME"/Desktop"
else
image_path=`echo "$NAUTILUS_SCRIPT_CURRENT_URI" | sed -e 's/^file:\/\///; s/%20/\ /g'`
fi
gui=`which zenity`

#  Obtain password when required
gksudo -u root -k -m "Please enter your system password:" "sudo -v"
passresult=$?

#  Mounter function
iso_mount()
{
if [ "$passresult" == "3" ]; then
exit 1
fi
if [ "$passresult" == "2" ]; then
$gui --info --title "ISO Mounter" --text "Cancelled!"
exit 0
fi
if [[ "$the_image" =~ "\.volume$" ]]; then
image_name=`echo "$image_name" | sed -e 's/\.volume$//'`
iso_umount
exit 0
fi
if ! [[ "$the_image" =~ "\.iso$" || "$the_image" =~ "\.img$" || "$the_image" =~ "\.nrg$" ]]; then
$gui --question --title "ISO Mounter" --text "Select, "Ok" if you're sure that $the_image is an image file."
if [ "$?" == "1" ]; then
$gui --info --title "ISO Mounter" --text "Cancelled!"
exit 1
fi
fi
sudo mkdir /media/"$image_name"
#  Support for both normal .iso and Nero .nrg files (somewhat experimental for .nrg support - let me know if it works for you!)
if [[ "$the_image" =~ "\.nrg$" ]]; then
if sudo mount -o loop,offset=307200,users -t iso9660 "$image_path/$the_image" /media/"$image_name"; then
nautilus /media/"$image_name" --no-desktop
else
sudo rmdir /media/"$image_name"
$gui --error --title "ISO Mounter" --text "Nero image file, \"$the_image\" could NOT be mounted!"
exit 1
fi
else
if sudo mount -o loop,users -t iso9660 "$image_path/$the_image" /media/"$image_name"; then
nautilus /media/"$image_name" --no-desktop
else
sudo rmdir /media/"$image_name"
$gui --error --title "ISO Mounter" --text "ISO image file, \"$the_image\" could NOT be mounted!"
exit 1
fi
fi
}

#  Unmounter function
iso_umount()
{
if [[ "$passresult" == "2" || "$passresult" == "3" ]]; then
exit 1
fi


if sudo umount "/media/$image_name"; then
$gui --info --text "Un-mounted /media/$image_name/."
sudo rmdir "/media/$image_name/"
else
if [[ `ls -l "/media/$image_name" | grep "total 0"` != "" ]]; then
if $gui --question --title "ISO Mounter" --text "Mount point, \"/media/$image_name\" was found un-mounted!  Re-mount it?"; then
iso_mount
else
if sudo rmdir "/media/$image_name/"; then
$gui --info --text "Mount point, \"/media/$image_name\" removed!"
else
$gui --error --title "ISO Mounter" --text "Could NOT remove mount point, \"/media/$image_name!\""
fi
fi
else
$gui --error --title "ISO Mounter" --text "Could NOT un-mount $the_image!"
fi
fi
}

#  Validate the prospective image file and decide whether to mount or un-mount it.
if [[ -d "$image_path/$the_image" ]]; then
$gui --error --title "ISO Mounter" --text "\"$image_path/$the_image\" is NOT an image file!"
exit 1
fi
if [[ -d "/media/$image_name" ]]; then
iso_umount
else
iso_mount
fi
exit 0

Fa1r

  • Käyttäjä
  • Viestejä: 221
  • Reply #1!
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #15 : 22.07.07 - klo:00.54 »
Kyse oli pienistä näppäristä ;D
What you don't know can hurt you, only you won't know it.
--$(fortune)
Elastisen Linux-biisi

Melmacian

  • Käyttäjä
  • Viestejä: 868
  • Ubuntu Hardy
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #16 : 22.07.07 - klo:03.19 »
No kyllä tuo vielä aika pieni on, näppärä varmastikkin ;)

Melmacian

  • Käyttäjä
  • Viestejä: 868
  • Ubuntu Hardy
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #17 : 22.07.07 - klo:17.15 »
Tulipa väännettyä vielä pieni scripti sop-lähetysten katseluun.

/usr/bin/playsop
Koodia: [Valitse]
#!/bin/bash

# käyttö: $ playsop sop://osoite.lähetykseen.com


# Polku sp-sc:een
SPSC=/home/epeli/temp2/sp-sc/sp-sc

# Toisto-ohjelma
PLAYER=mplayer

# Lopetetaan heti jos toisto-ohjelmaa ei ole asennettuna.
[ -z $(which $PLAYER)  ] && echo "$PLAYER ei ole asennettuna! " && exit 0
# Lopetetaan jos sop-osoitetta ei ole annettu.
[ -z $1  ] && echo "Usage: $(basename $0) <sop://url>" && exit 0


# käynnistetään sp-sc taustalle
echo "Opening broadcast..."
$SPSC $1 3908 8908  > /dev/null &

# odotetaan 15sek jotta lähetys kerkeää käynnistyä
sleep 15

# Avataan lähetys
$PLAYER http://localhost:8908/tv.asf

# Lopuksi tapetaan taustalla oleva sp-sc, kun katselu lopetaan.
killall sp-sc
« Viimeksi muokattu: 22.07.07 - klo:18.51 kirjoittanut Epeli »

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #18 : 22.07.07 - klo:18.09 »
Tulipa väännettyä vielä pieni scripti sop-lähetysten katseluun.

Minusta käyttöohjeet olisi hyvä tulostaa jos skripti ajetaan ilman parametreja. Lisäksi virhetilanteessa olisi hyvä palauttaa virhekoodi eli jotain muuta kuin nolla.

Yksinkertaisimmillaan tässä tapauksessa voisi ohjeet tulostaa näin:
Koodia: [Valitse]
[ $# -ne 1 ] && echo "Usage: $(basename $0) sop://osoite.lähetykseen.com" && exit 1
« Viimeksi muokattu: 22.07.07 - klo:18.36 kirjoittanut mgronber »

Melmacian

  • Käyttäjä
  • Viestejä: 868
  • Ubuntu Hardy
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #19 : 22.07.07 - klo:18.52 »
Minusta käyttöohjeet olisi hyvä tulostaa jos skripti ajetaan ilman parametreja.
Jep ;)