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

larpa

  • Vieras
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #80 : 25.03.08 - klo:13.47 »
#Kikkare vaihtelee Oulun uimahallin reaaliaikaisien web-kameroiden
#välillä kuvia kolmen sekunnin välein.
#Koodia saa parantaa ja muuttaa miten tahtoo.
#Kikkare tekee hakemiston Uinti, jonka voi myöhemmin poistaa.

#!/bin/bash
mkdir Uinti
cd Uinti
while true;do

#Hyppyalue
wget http://213.216.208.153/otos/localImages/0014D18A32FD-0.jpg?1206442293861
mv 0014D18A32FD-0.jpg?1206442293861 Hyppyalue
eog Hyppyalue &
sleep 3
killall eog

#Isoallas
wget http://213.216.208.153/otos/localImages/0014D18A32F8-0.jpg?1206443911233
mv 0014D18A32F8-0.jpg?1206443911233 Isoallas
eog Isoallas &
sleep 3
killall eog

#Kuntoallas
wget http://213.216.208.153/otos/localImages/0014D18A32F6-0.jpg?1206444031714
mv 0014D18A32F6-0.jpg?1206444031714 Kuntoallas
eog Kuntoallas &
sleep 3
killall eog

#Monitoimiallas
wget http://213.216.208.153/otos/localImages/0014D18A32F9-0.jpg?1206444265661
mv 0014D18A32F9-0.jpg?1206444265661 Monitoimiallas
eog Monitoimiallas &
sleep 3
killall eog

done

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #81 : 25.03.08 - klo:16.36 »
killall eog

Ei ole kovin kilttiä tappaa kaikkia ohjelman instansseja. Parempi tapa on ottaa prosessia luotaessa sen prosessi-id (pid) talteen ja käyttää sitä instanssin tappamiseen. Lisäksi lataisin tiedoston suoraan oikealle nimelle antamalla wget:lle parametrin -Otiedosto.

Jos kuvat näytettäisiin jollakin KDE:n ohjelmalla niin tarkistaisin voiko kuvan vaihtaa dcop-rajapinnan kautta ilman että prosessia tarvitsee tappaa.

larpa

  • Vieras
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #82 : 27.03.08 - klo:07.46 »
killall eog

Ei ole kovin kilttiä tappaa kaikkia ohjelman instansseja. Parempi tapa on ottaa prosessia luotaessa sen prosessi-id (pid) talteen ja käyttää sitä instanssin tappamiseen. Lisäksi lataisin tiedoston suoraan oikealle nimelle antamalla wget:lle parametrin -Otiedosto.

Jos kuvat näytettäisiin jollakin KDE:n ohjelmalla niin tarkistaisin voiko kuvan vaihtaa dcop-rajapinnan kautta ilman että prosessia tarvitsee tappaa.

#Koodia saa parantaa ja muuttaa miten tahtoo.  ;)
En ole hyvä tekemään nuita, vaan teen ne siten että toimivat suhteellisen kätevästi. Itselläni ainakin toimii suht mukavasti.
Voisit kokeilla tehdä tuosta paremman version(ei vaadi paljoa), niin oppisin minäkin enempi?

Tuplanolla

  • Käyttäjä
  • Viestejä: 1420
  • Reg. Linux user #423604
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #83 : 27.03.08 - klo:07.54 »
IP-osoitteen saa hieman helpommin dyndns.org:n palvelusta.

Koodia: [Valitse]
$ wget -q -O - http://checkip.dyndns.org/ | grep -o '\([0-9]\+\.\)\{3\}[0-9]\+'
Vielä helpommin saa tällä: ;D
Koodia: [Valitse]
curl 'tuplanolla.dy.fi/iposoite.php'
Lisää [ratkaistu] ketjun ensimmäisen viestin otsikkoon, kun ongelma ratkeaa!

nebula

  • Käyttäjä
  • Viestejä: 438
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #84 : 27.03.08 - klo:08.24 »
Saakos tohon uimahalli "kikkareeseen" kuvaa naisten saunasta? ... miel. parin sekunnin päivitystahdilla

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #85 : 27.03.08 - klo:18.16 »
IP-osoitteen saa hieman helpommin dyndns.org:n palvelusta.

Koodia: [Valitse]
$ wget -q -O - http://checkip.dyndns.org/ | grep -o '\([0-9]\+\.\)\{3\}[0-9]\+'
Vielä helpommin saa tällä: ;D
Koodia: [Valitse]
curl 'tuplanolla.dy.fi/iposoite.php'

Jos arvata pitäisi niin olettaisin että checkip.dyndns.org on varmemmin tavoitettavissa kuin tuplanolla.dy.fi :)

Tuplanolla

  • Käyttäjä
  • Viestejä: 1420
  • Reg. Linux user #423604
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #86 : 27.03.08 - klo:18.50 »
IP-osoitteen saa hieman helpommin dyndns.org:n palvelusta.

Koodia: [Valitse]
$ wget -q -O - http://checkip.dyndns.org/ | grep -o '\([0-9]\+\.\)\{3\}[0-9]\+'
Vielä helpommin saa tällä: ;D
Koodia: [Valitse]
curl 'tuplanolla.dy.fi/iposoite.php'

Jos arvata pitäisi niin olettaisin että checkip.dyndns.org on varmemmin tavoitettavissa kuin tuplanolla.dy.fi :)
Joo, varmasti on ;D
Mut toi nyt vaan oli esimerkki.

Koodia: [Valitse]
curl 'whatismyip.org'Tuo on paljon helpompi kuin tuo sinun ehdottamasi ja varmasti toimivampi kuin tuplanolla.dy.fi.

Sitä paitsi:
Lainaus
jani@zeus:~$ uptime
 18:50:57 up 110 days,  4:42,  1 user,  load average: 0.01, 0.06, 0.10
jani@zeus:~$
Kyllä tuo musta aika hyvin on näin kotiservuksi. :)
Lisää [ratkaistu] ketjun ensimmäisen viestin otsikkoon, kun ongelma ratkeaa!

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #87 : 27.03.08 - klo:19.53 »
Koodia: [Valitse]
curl 'whatismyip.org'Tuo on paljon helpompi kuin tuo sinun ehdottamasi ja varmasti toimivampi kuin tuplanolla.dy.fi.

Tuo on ihan hyvä.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #88 : 27.03.08 - klo:20.06 »
Voisit kokeilla tehdä tuosta paremman version(ei vaadi paljoa), niin oppisin minäkin enempi?

Olen jo tehnyt hieman vastaavan esimerkin joka löytyy tästä samasta säikeestä.

epi

  • Käyttäjä
  • Viestejä: 2
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #89 : 29.03.08 - klo:12.29 »
Itse löysin kovin käteväksi imagen mounttaus nautilus-scriptistä. Oli jo aikaisemminkin täällä, tosin hieman pitempi versio.
En muista missä tuli vastaan.

Koodia: [Valitse]
#!/bin/bash
# mount

gksudo -k /bin/echo "got r00t?"

BASENAME=`basename $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS .iso`

sudo mkdir "/media/$BASENAME"

if sudo mount -o loop -t iso9660 $NAUTILUS_SCRIPT_SELECTED_FILE_PATHS "/media/$BASENAME"
then
if zenity --question --title "ISO Mounter" --text "$BASENAME Successfully Mounted. Open Volume?"

then
nautilus /media/$BASENAME --no-desktop
fi

exit 0
else
sudo rmdir "/media/$BASENAME"

zenity --error --title "ISO Mounter" --text "Cannot mount $BASENAME!"

exit 1
fi

Kaverin modaus avaa Kaffeinella DVD:n toistoon, tosin siinä on vielä bugi.

mgronber

  • Käyttäjä
  • Viestejä: 1458
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #90 : 29.03.08 - klo:12.50 »
Itse löysin kovin käteväksi imagen mounttaus nautilus-scriptistä.

Tuo skripti vaatii suorittajalta pääkäyttäjän oikeudet, mikä ei ole erityisen hyvä asia.

KDE-Apps.org:sta löytyy esimerkiksi FuseISOMenu, jossa homma on tehty oikein ja liittäminen onnistuu myös tavallisilta käyttäjiltä.

UbunTux

  • Käyttäjä
  • Viestejä: 2046
  • KubunTux
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #91 : 05.04.08 - klo:17.33 »
Iski kauhea himo lukea kaikki Viivit ja Wagnerit läpi Hesarin sivuilta.
http://www.hs.fi/viivijawagner/
Piti kehittää jokin hommaa helpottava  konsti:
Koodia: [Valitse]
#!/bin/bash

#########################################
sivu=http://www.hs.fi/viivijawagner/
viimeinenpvm=15.3.2001
tallennuskansio="$HOME/Viivi_ja_Wagner"
##########################################

if  ! [ -d "$tallennuskansio" ]
then
mkdir -p "$tallennuskansio"
fi
cd "$tallennuskansio"

function nouto()
{
wget $sivu  -O sivu.html
kuva=$(cat sivu.html | grep iso_webkuva|grep -v departmentLogo|cut -d '"' -f2)
numero=$(cat sivu.html| grep  "<h1>Viivi ja Wagner</h1>" -n| cut -d ":" -f1)
pvmrivi=$(echo $numero +1|bc)
pvm=$(cat sivu.html|sed -n "$pvmrivi"p| sed -e 's/</ /g' -e 's/>/ /g'|cut -d " " -f3)
kansio=$(echo $pvm|cut -d "." -f3)
kansio1=$(echo $pvm|cut -d "." -f2)

if [ "$kansio1" -lt "10" ]
then
kansio1=0$kansio1
fi
vrk=$(echo $pvm|cut -d "." -f1)
if [ "$vrk" -lt "10" ]
then
pvmtied=0"$pvm"
else
pvmtied="$pvm"
fi

sijainti=$(echo "$kansio"/"$kansio1")
if ! [ -d "$tallennuskansio"/$sijainti ]
then
mkdir -p "$tallennuskansio"/$sijainti
fi
wget $kuva -O  "$tallennuskansio"/$sijainti/Viivi_ja_Wagner-$pvmtied.gif
}

nouto

if  [ "$1" = edelliset ]
then
        until [ "$pvm" = "$viimeinenpvm" ]
do
edellinenrivi=$(cat sivu.html | grep "Edellinen&nbsp" -n | cut -d ":" -f1)
edellinensivurivi=$(echo $edellinenrivi -1|bc)
sivu=$(cat sivu.html|sed -n "$edellinensivurivi"p|cut -d '"' -f2)
nouto
done
fi
rm sivu.html
./viiviwagner
imauttaa vimeisimmän ja
./viiviwagner edelliset
 kaikki muut viimeinenpvm asti mikäli se on olemassa. Kuvat menee vuosittain ja kuukasittain omiin kansioihinsa.
« Viimeksi muokattu: 05.04.08 - klo:23.20 kirjoittanut UbunTux »
KDE neon
Uudempaa KDE:tä Ubuntulla

pumo

  • Käyttäjä
  • Viestejä: 140
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #92 : 07.04.08 - klo:15.31 »
olen itse vähän vastaavalla haeskellu ajastetusti crontabilla joka aamu (paitsi sunnuntaisin) sarjikset hesarilta. samalla saa myös fingerporin.

Koodia: [Valitse]
#!/bin/sh
date=`date +%Y-%m-%d`
kuva=`lynx -image_links -dump http://www.hs.fi/viivijawagner/ |grep iso_webkuva |gawk '{print $2}'|sed -n '2p;2q'`
wget "$kuva" -q -O $HOME/public_html/sarjis/vw-$date.gif

kuvaFP=`lynx -image_links -dump http://www.hs.fi/fingerpori/ |grep iso_webkuva |gawk '{print $2}'`
wget "$kuvaFP" -q -O $HOME/public_html/sarjis/fp-$date.gif
edit lisätty fingerpori.
« Viimeksi muokattu: 07.04.08 - klo:15.44 kirjoittanut pumo »

snifi

  • Vieras
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #93 : 29.04.08 - klo:12.36 »
Kysymykseni tähän ketjuun: Miten annetaan cat-komennolle parametrit, jotta komento keräisi tekstitiedostot yhdeksi ja lisäisi väliin aina tiedostonnimen? Ensimmäisen vaiheen olen selvittänyt:

find . -name '*.c' | xargs cat >kokoelma.c

mutta miten saisin tiedostonnimet mukaan?
Tähän tapaan: (tiedosto "kokoelma.c")

Koodia: [Valitse]
########################
# tiedosto1.c
########################
<tiedosto1.c sisältö tähän>

########################
# tiedosto2.c
########################
<tiedosto2.c sisältö tähän>

########################
# tiedosto3.c
########################
<tiedosto3.c sisältö tähän>

<jne...>

gdm

  • Sitä saa mitä tilaa...
  • Käyttäjä
  • Viestejä: 4363
    • Profiili
    • Keskustelualueiden säännöt
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #94 : 29.04.08 - klo:12.55 »
@ snifi
eräs keino find . -iname '*' |tee -a ~/testi.txt
tuolla listaa tiedostot ja niiden sisällön kotikansioon tiedostoon testi.txt
komento suoritetaan halutun hakemiston juuressa ja siis listaa kaikki kansiot ja tiedostot rekursiivisesti
Lisää [Ratkaistu] aloitusviestiin jos ongelmasi selviää!
Saamasi tuki on ilmaista, joten älä vaadi tai uhkaile saadaksesi apua!

beh

  • Käyttäjä
  • Viestejä: 154
    • Profiili
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #95 : 29.04.08 - klo:14.05 »
toinen keino voisi olla for-silmukka:
Koodia: [Valitse]
for i in "$( find . -name '*.c' )"; do echo "$i" >> kokoelma.c; cat "$i" >> kokoelma.c; done
lisää vain ylimääräisiä rivejä ja erottimia echolla.

snifi

  • Vieras
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #96 : 29.04.08 - klo:22.39 »
Päädyin nyt sitten kumminkin tällaiseen pytoniaaniseen ratkaisuun:

Koodia: [Valitse]
#!/usr/bin/env python

# example:
# ~/makehuman$ python kokoa.py ".*cpp" >kokoelma.cpp

import os, sys
import re

if len(sys.argv) < 2:
  rexp = ".*"
else:
  rexp = sys.argv[1]


p = re.compile(rexp)

t = []
for root, dirs, files in os.walk('.'):
  for f in files:
    filename = "%s%s%s" % (root, os.sep, f)
    if p.match(filename) and os.stat(filename)[6] > 0:
      t.append(filename)


for f in t:
  print
  print 60*"#"
  print "# %s" % f
  print 60*"#"
  print
  h=open(f)
  print h.read()
  h.close()

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #97 : 30.04.08 - klo:18.47 »
(Kun en ole oikein Vappu-ihmisiä niin kokeilin sitten hieman bash-skriptausta :) )

Ummikon ei Linuxissa (mukaan lukien Ubuntu) ole kovin helppoa löytää tietoa omasta koneestaan eli "mistä nään mikä näytönohjain mulla on" kysymyksiä tälläkin foorumilla näkyy.

Nippelitieto v0.01 kertoo joitain perustietoja koneestasi

Olen tasan yhden bash-skriptin tätä ennen tehnyt (tarkisti on Enemy Territory -palvelin pystyssä ja jos ei ollut, käynnisti uudelleen), joten vähän hapuilua on. Tosin tässä nyt ei varsinaisesti ole muuta kuin sed:ia ja awk:ia ...

Korjailkaa paremmaksi :)

Koodia: [Valitse]
#!/bin/bash

# Nippelitieto v0.01
# Tämä skripti kaivelee joitain yleisimmin esim. Ubuntu-foorumilla kyseltyjä tietoja tietokoneestasi
# KÄYTTÖ
# - lataa skripti koneellesi
# - anna skriptille suoritusoikeudet (GNOME: klikkaa oikealla ja valitse Ominaisuudet -> Oikeudet -> Salli tiedoston suorittaminen ohjelmana
# tuplaklikkaa tiedostoa ja valitse "Suorita päätteessä"

e='---------'

echo "Nippelitieto 0.1"
echo ''

echo $e'Linux-jakelusi versio'$e
lsb_release -d  | awk '{split ($0, a, ":"); print a[2]}'
echo ''

echo $e'Kieli'$e
echo $LANG
echo ''


echo $e'Koneesi prosessori on'$e
cat /proc/cpuinfo | grep 'model name' | awk '{split ($0, a, ":"); print a[2]}'
echo ''

echo $e'Koneessasi on keskusmuistia (megatavuina) '$e
free -m|grep 'Mem'| awk '{split ($0, a, " "); print a[2]}'
echo ''

echo $e'Näytönohjaimesi on:'$e
lspci | grep 'VGA' | awk '{split ($0, a, ":"); print a[3]}'
echo ''

echo $e'Näytönohjaimen 3D-tuki:'$e
glxinfo | grep 'direct rendering: Yes' > /dev/null && echo 'päällä' || echo 'ei päällä' 
echo ''

echo $e'Äänikorttisi on:'$e
lspci | grep -i 'audio' | awk '{split ($0, a, ":"); print a[3]}'
echo ''

echo $e'Käytössäsi on seuraavat ohjelmalähteet:'$e
sed -e 's/#.*//;/^$/d' /etc/apt/sources.list | awk '{split ($0, a, "//"); print a[2]}'

#pidetään terminaali-ikkuna auki väkisin tuplaklikkaajille
echo ''
echo "Paina Enter lopettaaksesi"
echo ''
read

#zenity --text-info --filename=$HOME/$filename
« Viimeksi muokattu: 30.04.08 - klo:19.03 kirjoittanut Ari Häyrinen »
"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori

Tomin

  • Palvelimen ylläpitäjä
  • Käyttäjä / moderaattori+
  • Viestejä: 11445
    • Profiili
    • Tomin kotisivut
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #98 : 30.04.08 - klo:18.51 »
Hyvä skripti, mutta tuo muisti on kB eikä MB kuten toivoisin vaan käy se noinkin... ::)
Automaattinen allekirjoitus:
Lisäisitkö [RATKAISTU] ketjun ensimmäisen viestin aiheeseen ongelman ratkettua, kiitos.

Tuxer

  • Käyttäjä
  • Viestejä: 657
  • Debian 7.0, Sailfish
    • Profiili
    • opendimension.org
Vs: Pienet näppärät scriptit (bash, python, perl yms.)
« Vastaus #99 : 30.04.08 - klo:19.07 »
Hyvä skripti, mutta tuo muisti on kB eikä MB kuten toivoisin vaan käy se noinkin... ::)

Ok, korjasin tuon. Kokeilin ihan aluksi saada sitä megatavuina free-komennolta mutta luovutin. Sitten löysin awkin ja sillähän sen sieltä sai kaivettua.
"Menehän Tonttu Tomera tarkastamaan ollaanko korsuissa kiltisti."
Fingerpori