Szkriptek: Python, Perl, Bash, ...

[megoldva] Python Thread queue hogyan

Sziasztok!

A kovetkezo problemam van: Komunikacio szalak kozott queue-val. Valami ilyesmit probalok megvalositani (a kod sokkal hosszabb es osszetettebb, szoval megprobaltam, csak az idevonatkoz reszt reprodukalni itt):


class CsvManage():
    CsvReadNames(gettnameline):
       # give back a list

class A.(threading.Thread):
   def __ini__(self, csvget, csvput)
      self.csvget = csvget
      self.csvput = csvput
   def run(self)
      csvdata = CsvManage()
      while 1:
          try:
              gettnameline = self.csvnameget.get(True, 0.05)
              self.csvnameput.put(csvdata.CsvReadNames(gettnameline))
          except Queue.Empty:
              continue

class B.(threading.Thread):
   def __ini__(self, searcheddir, csvnameget, csvnameput)
      self.searcheddir = searcheddir
      self.csvnameget = csvnameget
      self.csvnameput = csvput
   def run(self):
      while 1
         self.csvnameget.put(self.searcheddir)
         csvfilenames = self.csvnameput.get()
         print 'OK'


threadLock = threading.Lock()
threads = []

csvnameget = Queue.Queue()
csvnameput = Queue.Queue()
csvworking = A(csvnameget, csvnameput)
csvworking.start()
threads.append(csvworking)

TEF = B.(searcheddir, csvnameget, csvnameput)
TEF.start()
threads.append(TEF)

for t in threads:
    t.join()
print "Exiting Main Thread"


Szoval : TEF a searcheddir str-et berakja a csvnameget queue-ba, ahonan a csvworking A class threat kiveszi es lefutatja a csvdata ahonan visszakap egy list-et. Ez eddig mukodik. A csvdata.CsvReadNames(gettnameline) a list amit vissza akarok adni a TEF-nek, szoval berakom a csvnameput queue-ba. De ez valami miatt nem mukodik. Mindenfele hibauzenet nelkul TEF nem lep tovabb a print 'OK'-ra. Valalmi otlet mi lehet az oka?

Ez az elso eset amikor Python Threat-kel dolgozok, szoval ha lehet ne hulyezetek le egybol.

Python Thread queue hogyan

Szisztok!

A kovetkezo problemam van: Komunikacio szalak kozott queue-val. Valami ilyesmit probalok megvalositani (a kod sokkal hosszabb es osszetettebb, szoval megprobaltam, csak az idevonatkoz reszt reprodukalni itt):


class CsvManage():
    CsvReadNames(gettnameline):
       # give back a list

class A.(threading.Thread):
   def __ini__(self, csvget, csvput)
      self.csvget = csvget
      self.csvput = csvput
   def run(self)
      csvdata = CsvManage()
      while 1:
          try:
              gettnameline = self.csvnameget.get(True, 0.05)
              self.csvnameput.put(csvdata.CsvReadNames(gettnameline))
      except Queue.Empty:
           continue

class B.(threading.Thread):
   def __ini__(self, searcheddir, csvnameget, csvnameput)
      self.searcheddir = searcheddir
      self.csvnameget = csvnameget
      self.csvnameput = csvput
   def run(self):
      while 1
         self.csvnameget.put(self.searcheddir)
         csvfilenames = self.csvnameput.get()
         print 'OK'


threadLock = threading.Lock()
threads = []

csvnameget = Queue.Queue()
csvnameput = Queue.Queue()
csvworking = A(csvnameget, csvnameput)
csvworking.start()
threads.append(csvworking)

TEF = B.(searcheddir, csvnameget, csvnameput)
TEF.start()
threads.append(TEF)

for t in threads:
    t.join()
print "Exiting Main Thread"


Szoval : TEF a searcheddir str-et berakja a csvnameget queue-ba, ahonan a csvworking A class threat kiveszi es lefutatja a csvdata ahonan visszakap egy list-et. Ez eddig mukodik. A csvdata.CsvReadNames(gettnameline) a list amit vissza akarok adni a TEF-nek, szoval berakom a csvnameput queue-ba. De ez valami miatt nem mukodik. Mindenfele hibauzenet nelkul TEF nem lep tovabb a print 'OK'-ra. Valalmi otlet mi lehet az oka?

Ez az elso eset amikor Python Threat-kel dolgozok, szoval ha lehet ne hulyezetek le egybol.

[megoldva] crontab error

Sziasztok!

Van a kovetkezo kodom:


declare -A InterfaceMatrix
declare -a Counters
Begin_hour=`date +"%Y-%m-%d %H:00:00" -d "1 hours ago"`
End_hour=`date +"%Y-%m-%d %H:00:00"`
NameCounter=`ssh -i /home/zenpm/.ssh/keys/* dbadmin@****  "/opt/vertica/bin/vsql -w***** -c \"SELECT 'sor',interface_name, COUNT(*) FROM load_stats  WHERE z_timestamp BETWEEN '$Begin_hour' AND '$End_hour' GROUP BY interface_name ORDER BY interface_name;\"" | grep sor | awk '{print $0}'`
Counters=(`echo $NameCounter | awk 'BEGIN{RS=" "}{print $0}' | grep "^[0-9]"`)
Names=`echo $NameCounter | awk 'BEGIN{RS=" "}{print $0}' | grep "^[a-Z]" | sed 's/sor//g'`
let i=0
for Name in $Names; do
        let InterfaceMatrix[$Name]=${Counters[$i]}
        let i+=1
done

for Interface in $Interfaces; do
        if [ ${InterfaceMatrix[$Interface]} -gt '0' ]; then
                Error=0
                Mail=$Mail"<tr><td class=\""$Error"\">OK</td><td> "$Interface" is loading</td></tr>"
        else
                Error=1
                Mail=$Mail"<tr><td class=\""$Error"\">Error</td><td> "$Interface" is NOT loading</td></tr>"

        fi
done



A kod teljesen rendben lefut amikor kezzel inditom, de amikor crontab-bol indul, akkor az osszesre Error=1-et kapok. Vagyis szerintem az sql lekerdezes soran nem kapunk vissza semmit. Van valalkinek valalmi otlete?

[RESOLVED] getadsmtp.pl nem működik

Sziasztok,

A cimben emlitett scripptel szeretném AD-ból kinyerni userek e-mail cimeit egy e-mail gw-hez.
Viszont a script nem szedi ki az infót.

Másik gépen működik (az egy ubuntu 8.04, perl 5.8.8), viszont az újon már elhasal (12.04, perl 5.14.2).

A scriptbe tettem pár debug printet (http://pastebin.com/59cSZW6L) , viszont egy ponton megáll és ezt adja csak vissza:

A bash script hivja meg a perlt:
/usr/bin# ./update-relay-recipients.sh
DEBUG: Net::LDAP::Search=HASH(0x1724f38)

Ez a mesg változó tartalma.

Hol a hiba?

Többfázisú autocomplete js

Milyen js könyvtárakkal/eszközökkel szokás megoldani egy webes űrlapon a többfázisú autocoplete-et? (Automatikus kiegészítést.) Azt szeretném, hogy eleinte csak "AA, BB, CC, DD" látsszon, s aztán, ha megvan valamelyik, akkor ennek függvényében kínálkozzanak föl újabb további szavak, ugyanabban a szövegmezőben. Ilyenem már van, de ebben nem látok többfázisú lehetőséget.

[MEGOLDVA] Fajlmeret statisztika

Sziasztok!

Van egy rendszerem ahol minden órában létrehozunk egy forgalmi statisztikákat tartalmazó fájlt. Ezeket a fájlokat szinten óránként megvizsgaljuk kiugró méretváltozást keresve. Eddig ezt úgy csináltam, hogy lekérdeztem a fájlok méretét 10 napra visszamenőleg majd ezekből átlagot és standard szórást számoltam. Ha az új fájl méretének szórása nagyobb volt mint a 3x standard szórás akkor kaptunk egy figyelmeztetés.
Néhány napja viszont egy hibából kifolyólag 5x méretű fájlokat generáltunk néhány órán át. Ez hatalmasra növelte a standard szórást és lényegében a teszt nem működik. Szóval újra kell írnom.
Lényegében nem értek a statisztikához így a kérdésem az lenne, hogy milyen eljárást ajánlotok.
Mivel ez csak egy része egy komplett bash scriptnek szeretném bash-ban megvalósítani.

OpenWrt emailaterreboot script.MEGOLDVA

Sziasztok!

1043 ND v1.10 soho routeren szeretnék beüzemelni egy mail scriptet ami küldi a mailt
bekapcsoláskor reboot és lekapcsoláskor.Az ssmtp-t már sikerült beüzemelni mert belépve
az eszközre elmegy a mail de szeretném automatizálni egy scriptben.Találltam egy scriptet de a jó égnek nem akar működni.Valami szintatktikai baja van.Sajnos még nem vagyok elég járatos a scriptekben ezért szeretném a segítségeteket kérni!Az eszközön Powered by LuCI Trunk (0.12+svn-r10530) OpenWrt Barrier Breaker 14.07 van.

Előre is köszi!

Üdv:Anthony_

[MEGOLDVA]Perl segítség

hello

nem értem h miért ezt a kimenetet kapom:
23 24 25 23 is undefined! 23 is undefined! 45

a progam:
my @t = ( "23", "24", "25");
$t[5] = "45";

my $x = 0;

foreach $x (@t)
{
no warnings;
if (defined $x) {print $x, " ";}
else {print "$t[$x] is undefined!" . " ";}
}

miért az első 0-ik elemet adja vissza és nem a tömb indexet (3-at és 4-et)?

Bash (vagy bármi) Fileok törlése amennyiben két példányban létezik (különböző kiterjesztéssel)

Sziasztok,

adott egy könyvtárszerkezet, amiben fotókat tartok, de ezekből sok (de nem mindegyik) két példányban is létezik, .cr2 illetve .jpg kiterjesztéssel.

Mi a legegyszerűbb módja hogy minden .cr2 kiterjesztést letöröljek AMENNYIBEN létezik .jpg belőle?

Ubuntu 14.04, gondolom bash-ben megoldható :)

Köszi előre is!