Näytä kirjoitukset

Tässä osiossa voit tarkastella kaikkia tämän jäsenen viestejä. Huomaa, että näet viestit vain niiltä alueilta, joihin sinulla on pääsy.


Viestit - ajv

Sivuja: [1]
1
Kiitos vaivannäöstä. Itsekin kerkesin pienen pyyttonin pyöräyttää, tämä ei tosin komentoriviltä lue optioita, ne pitää säätää skriptiin. Tuo perli on kyllä just sen näköstä aku ankan kiroilua kuin muistinkin ;D, nimimerkillä olen koittanut vähentää.

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

import datetime

logfile = "/var/log/dpkg.log"

def year(DateStr):
    return int(DateStr.split("-")[0])
def month(DateStr):
    return int(DateStr.split("-")[1])
def day(DateStr):
    return int(DateStr.split("-")[2])
def hour(TimeStr):
    return int(TimeStr.split(":")[0])
def minute(TimeStr):
    return int(TimeStr.split(":")[1])
def second(TimeStr):
    return int(TimeStr.split(":")[2])

def sortByDate(db):
    decorated = [ (db[pkg]["INSTALLDATE"], pkg) for pkg in db.keys()]
    decorated.sort()
    return [ pkg for (date, pkg) in decorated ]

def PkgsInTimeInterval(db, StartDate, EndDate = "TODAY"):
    import time
    if EndDate == "TODAY":
        t = time.localtime()
        EndDate = datetime.date(t.tm_year, t.tm_mon, t.tm_mday)

    pkgs = []
    qualify = pkgs.append
    for pkg in db.keys():
        if db[pkg]["INSTALLDATE"] >= StartDate and db[pkg]["INSTALLDATE"] <= EndDate:
            qualify(pkg)
    return pkgs

d = open(logfile, "r").read()
db = dict()

for line in d.split("\n"):
    if line.find("install ") != -1 or line.find("upgrade ") != -1:
        (DateStr, TimeStr, Stat, Package, notneeded, Version) = line.split()
        db[Package + "-" + Version] = dict()
        db[Package + "-" + Version]["INSTALLDATE"] = datetime.date(year(DateStr), month(DateStr), day(DateStr))
        db[Package + "-" + Version]["INSTALLTIME"] = datetime.time(hour(TimeStr), minute(TimeStr), second(TimeStr))

for pkg in PkgsInTimeInterval(db, datetime.date(2006, 8, 4)):
        print db[pkg]["INSTALLDATE"], pkg

2
Moro,

onko helppoa keinoa listata asennettuja deb paketteja asennuspäivämäärän mukaisesti järjestettynä? dpkg kirjoittaa logia /var/log/dpkg.log* tiedostoihin, joten niitä parsimalla onnistuu, mutta onko nopeampaa tietä, vrt

rpm -qa --queryformat '%{INSTALLTIME}\t%{NAME}\n' | sort -n

edit: tai mitä paketteja on asennettu tietyllä päivämäärävälillä, viimeiset paketit tuosta logista saa greppaamalla " install " tai " upgrade " sanoja.

3
Nyt kun alkuun päästiin, niin voisiko joku selventää eroa skriptin ja shell function välillä.

Funktiot suoritetaan saman shellin kontekstissa, kun skriptiä varten luodaan uusi prosessi. Elikkä kutsuttavaan funktioon näkyvät samat muuttujat, ja funktiossa määritettävät muuttujat näkyvät ulkopuolelle, ellei niitä eksplisiittisesti määritellä paikallisiksi local sanalla.

Koodia: [Valitse]
#!/bin/sh

function funkkari {
        echo $a
        b="bee"
}

a="aaa"
funkkari
echo $b

Sivuja: [1]