Szkriptek: Python, Perl, Bash, ...

PyGTK

Sziasztok!

A képen látható hírlevélküldő kisalkalmazást szeretném elkészíteni Ubuntu 12.04-re, de még nem dolgoztam PyGTK-val. Nem segítenétek összedobni a képen látható felületet?

screenshot :-)

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import pygtk
pygtk . require ( '2.0' )
import gtk, sys

class Application:

def destroy ( self, widget, data = None ):

gtk . main_quit ()

def __init__ ( self ):

self . window = gtk . Window ( gtk . WINDOW_TOPLEVEL )
self . window . set_title ( "Hírlevél" )
try:
self . window . set_icon_from_file ( "icon.png" )
except Exception, e:
sys . exit ( 1 )
self . window . connect ( "destroy", self . destroy )
# DEVELOPMENT
self . window . show ()

def main ( self ):

gtk . main ()

if __name__ == "__main__":

app = Application ()
app . main ()

Ubuntu Pastebin

Squeeze cron-bol bash para

Biztos, valami lámaságba futottam bele, de nem jövök rá.

A script csinál dolgokat, egy változóba gyűjti szövegként,hogy sikerültek-e a lépések, a végén a változót beletolja pipe-on egy mail-be, a lényeg:

#/bin/sh (bash is ugyanaz)
LEVELTORZS="elso sor\n"
LEVELTORZS+="masodik sor\n"
LEVELTORZS+="harmadik sor\n"

echo -e $LEVELTORZS | mail -s "subject" cimzettmailcim

--
lenny alatt működik hibátlanul konzolból is, cron-ból is
squeeze alatt hibátlan konzolból, cronból ez van a levelben:

-e elso sor

Azt már kideriváltam, hogy squeeze alatt cron-ban a -e kapcsoló a default echo-nál, tehát ha LEVELTORZS="elso sor\nmasodik sor\nharmadik sor\n" egy értékadásban van, akkor -e kapcsoló nélkül is működik a sortörés a mailben, de a += nem, cron-ban futtatva nem append-el.

Mi a két futtatás között a környezeti különbség?

Köszi

cron-ból futtatott ssh remote parancs nem oké (megoldva)

Sziasztok!

Van egy egyszerű kis bash script, ami ssh-n keresztül belép mikrotik hosztokra, ott kiad egy parancsot és a kimenetet letárolja egy változóba, amit feldolgozok...

A lényeges rész a bash script-ben kb. ennyi:

parancs='/ip firewall address-list print'
kimenet=`ssh -i /root/.ssh/id_dsa juzer@10.0.1.1 $parancs`
echo $kimenet

Kézzel lefuttatva a script-et működik, cron-ból futtatva nem működik.

Látom a mikrotik logban, hogy a linux dsa kulccsal bejelentkezik, tehát az ssh része okés.
SSH log szerint elküldi a parancsot:
debug1: Sending command: /ip firewall address-list print
Ennek ellenére a parancs nem fut le a távoli hoszton.

Van valakinek ötlete?

[Megoldva] php váratlan megállítása bash szkript háttérben futásánál

Ez a "runme" szkript:
#!/bin/sh
php -i

...Ubuntu linuxon háttérben indítva (./runme&) ezzel áll le: "[1]+ Megállítva", és a top is visszajelzi a "stopped" részen.

A megoldást itt találtam: http://ubuntuforums.org/showthread.php?t=977332
Kell neki egy </dev/null a végére; azaz jogos volt lx meglátása, hogy valamiképp a stdinnel kapcsolatos a dolog. Tehát így már jó:
#!/bin/sh
php -i </dev/null

Köszönöm a hozzászólásokat.

=== Eredeti változat: ===
Van egy bash szkriptem, amit már régen megírtam, s aztán többször módosítottam.
Hívogat egyéb szkripteket is.
Nemrég vettem észre, hogy valami olyat is módosítottam benne, aminek a hatására már nem tudom a háttérben futtatni. Ha így indítom:
./fuss > ide &
akkor pár másodperc múlva "Megállítva" felkiáltással megáll (ez a shell hibaüzenete). Ha előrehívom az fg paranccsal, akkor fut tovább, de én azt szeretném, hogy a háttérben fusson szépen (és ne álljon meg).

Egyébként a folyamat megállását a top parancs is visszajelzi a "stopped" részen.
Mi lehet ilyesminek az oka?

Megfelelő sorok/adatok kinyerése szövegből

Sziasztok!

Fvwm-hez szeretnék írni egy új mixer alkalmazást (bash, valamint fvwmscript nyelven).
A jelenleg/korábban használt verzió ez: http://vimeo.com/2453828 (Jobb alsó sarokban a mixer, bal gombbal csatornát vált, jobb gombbal némít, görgővel pedig hangerőt szabályoz.)

A mostani mixert pulseaudiohoz szeretném igazítani, így nem a csatornákat, hanem külön az alkalmazások hangerejét tudnám szabályozni. (Eddig nem volt pulse a rendszerben, tegnap telepítettem/állítottam be.) Ott tartok, hogy le tudom kérdezni, valamint tudom külön szabályozni az adott alkalmazások hangerejét parancssorban.

awk és/vagy sed segítségével megoldható-e az, hogy:
pactl list sink-inputs parancs kimenetéből valahogy kiszedni az alkalmazás nevét (application.name), valamint a hozzá tartozó hangerőt (Volume). Én sajnos csak grep|cut módon tudom megoldani, gondolom van ettől logikusabb elegánsabb megoldás is.

Valami ilyesmi kimenet jó lenne:
Volume: 0: 50% 1: 50% "Qmmp"
Volume: 0: 40% 1: 40% "mplayer2"

Előre is köszönet.

Python twisted web hiba

Sziasztok!

A segítségeteket szeretném kérni.

Most kezdtem a pythont, és szeretném használni a twisted-webet, de nem akarja az igazságot.
Egy debian linuxon szeretném futtatni, telepítettem apt-gettel a pythont, meg a twisted-webet is, aztán az egész twistedet is, hátha az a baj, de nem fut.

A twisted oldaláról letöltöttem egy példa programot:
proxy.py:



# Copyright (c) Twisted Matrix Laboratories.
# See LICENSE for details.

"""
This example demonstrates a very simple HTTP proxy.

Usage:
    $ python proxy.py

Then configure your web browser to use localhost:8080 as a proxy, and visit a
URL (This is not a SOCKS proxy). When browsing in this configuration, this
example will proxy connections from the browser to the server indicated by URLs
which are visited.

See also logging-proxy.py for a proxy with additional features.
"""

from twisted.web import proxy, http
from twisted.internet import reactor

class ProxyFactory(http.HTTPFactory):
    def buildProtocol(self, addr):
        return proxy.Proxy()

reactor.listenTCP(8080, ProxyFactory())
reactor.run()

és amikor futtatom:




# python proxy.py 
Traceback (most recent call last):
  File "proxy.py", line 25, in <module>
    reactor.listenTCP(8080, ProxyFactory())
  File "/usr/lib/python2.6/dist-packages/twisted/internet/posixbase.py", line 419, in listenTCP
    p.startListening()
  File "/usr/lib/python2.6/dist-packages/twisted/internet/tcp.py", line 855, in startListening
    raise CannotListenError, (self.interface, self.port, le)
twisted.internet.error.CannotListenError: Couldn't listen on any:8080: [Errno 98] Address already in use.

ezt kapom.

kérdésem, hogy miért van ez, és hogy mit tudok ellene tenni?

A válaszaitokat előre is köszönöm.

AwStats / Perl hiba: REGEX mindig mindenre illeszkedik

Pakolok át szoftvereket egy régi szerverről egy újra és az AwStats mindig minden sort eldob. Rájöttem, hogy ha az adott config fájlból kiszedem a SkipFiles="REGEXP[akarmihulyesek]" sort akkor jól működik. A REGEXP[] közé bármit bírhatok mindig, minden sort eldob... A régi szerveren ez az awstats ezzel a config fájllal tökéletesen működött.

Itt megakadtam, mi a fene lehet a gond?

bash Script hiba

Sziasztok!

Van egy scriptem:
1. futtatásra ezt kapom: "comm: file 2 is not in sorted order"
2. futtatásra lefut tökéletesen a script.
Mitől kap hibát eésőre?


#!/bin/bash

SAMPLE=/usr/share/checkdhcp/sample
LEASES=/var/lib/dhcp3/dhcpd.leases

diff $SAMPLE $LEASES > /dev/null
NEMEGYFORMA=$?
ERTEK=""
DATUM=`date +%Y.%m.%d" "%H:%M:%S`

if [ $NEMEGYFORMA == 1 ]
then
comm -3 $SAMPLE $LEASES | mail -s "DHCP MUKODES - $DATUM" email@valami.hu
cp $LEASES $SAMPLE
#chown root:root /usr/share/sample
fi

[MEGOLDVA]Bash script végtelenciklus

Sziasztok!

Egy olyan dologban kérném a segítséget, hogy szeretnék egy progit kb. 5 másodpercenként ismételgetni. (illetve egy 2-3 tagú csővezetéket).
Arra gondoltam, hogy ezt bash scripttel lenne talán legegyszerűbb egy végtelen ciklusba betenni, ami 5mp-enként ismétlődik. CTRL+C-vel megszakad ha már nem kell.

Valaki tudna ebben segíteni nekem, hogy hogyan lehet megcsinálni?
Köszi szépen előre is!

sed - egy szó beillesztése egy meglévő sor elejére.

a következőt szeretném:

adott egy szöveg file amelyben engem a phn#-t megelőző sorok érdekelnek

az eredeti file így néz ki

valami szöveg van itt egy sorban
phn#

a phn#-hez hasonló címkét szeretnék a "valmi szöveg van itt egy sorban"
elejére beszúrni.
valahogy így

nam#valami szöveg van itt egy sorban
phn#

tehát nem új sorban, hanem beszúrni a matching sort megelőző sor eléjére.
Eddig sed-el kisérleteztem nem sok sikerrel.

sed '/adr#/i nam#' filename.txt

Ez nem beilleszti az előző sor elejére, hanem új sort hoz létre és abba írja nam#-t

köszönöm