Szkriptek: Python, Perl, Bash, ...

[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!

Logfigyelő bash script

Sziasztok,

szeretnék egy olyan scriptet írni, ami folyamatosan monitorozza egy szöveges fájl végének bővülését és kiírja a képernyőre, de csak bizonyos prefixű sorok közötti sorokat jelenít meg.

A tail-lel ki tudom íratni a változásokat. Az awk-val és reguláris kifejezésekkel tudom szűrni a fájl tartalmát. Ez így külön-külön kipróbálva működik konzolban.

Legnagyobb gondom, hogy a bash scriptben csak egyszer fut le a tail és nem figyeli folyamatosan a fájlt.

Végtelen ciklus azért nem jó, mert a tail-nak elméletileg az a lényege, hogy csak akkor fut, ha van módosítás a fájlon. A watch program azért nem tetszik, mert levágja a szöveg végét a képernyő alján.

Az ötleteket előre is köszönöm!

threaded callback -ből a fő szál kilövése

Sziasztok!

RPi.GPIO modul felhasználásával szeretnék írni egy python szkriptet.
(http://sourceforge.net/p/raspberry-gpio-python/wiki/Inputs/)
Menne is szépen a dolog. Lehet, hogy tervezési hiba van a szkriptben, de az a helyzet állt elő, hogy egy ilyen "threaded callback" funkcióból ki kellene lőnöm a fő szálat és csak ennek a másodiknak kellene tovább futnia.
Ez kb úgy képzelhető el, mint egy szkripten belüli reset gomb, amit bármikor megnyomhatsz. Az eredeti szálat meg kell szakítani, alaphelyzetbe állítani pár dolgot, majd újraindítani egy belső funkciót.

Leegyszerűsített példa valahogy így:

import RPi.GPIO as GPIO
GPIO.setmode(GPIO.BCM)

def start()
 GPIO.setup(17, GPIO.IN, pull_up_down=GPIO.PUD_DOWN)
 GPIO.add_event_detect(17, GPIO.RISING, callback=reset_func, bouncetime=1500)
 while True:
  i=i+1
  print i

def reset_func()
 KILL_MAIN_THREAD
 i=0
 start

start

Hogyan tudom ezt megtenni?