Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Novellino, in cerca di spiegazioni

23 views
Skip to first unread message

Antonello Collini

unread,
May 12, 2012, 9:22:28 AM5/12/12
to
Da pochissimi giorni mi sto cimentando nell'apprendimento del Perl ( niente di professionale solo per divertimento ) e per cominciare ho voluto scrivere uno script che salvasse in file un elenco dei pacchetti rpm installati sul mio sistema, oltre ad una serie di informazioni relative al sistema stesso.

my $hostname = `hostname`;
my $cpu = `uname -m`;
my $date = `date +%d-%m-%Y`;
my $width = "=" x 60;

my %heading = (
"raw1" => "DATABASE OF UPDATED PACKAGES TO :\t",
"raw2" => "Pc_name :\t",
"raw3" => "System Type :\t",
"local_env" => [ "$date", "$hostname", "$cpu", "$width" ]
);

my $destdir = $ENV{HOME};

open (my $FILE, ">", "$destdir/" . "rpmdb-" . $heading{"local_env"}[1] . ".log")
or die $!;

print $FILE "$heading{raw1}" => "$heading{local_env}[0]\n";
print $FILE "$heading{raw2}" => "$heading{local_env}[1]";
print $FILE "$heading{raw3}" => "$heading{local_env}[2]";
print $FILE "$heading{local_env}[3]\n";

my $rpm_query = `rpm -qa --queryformat="%{name}\n" | sort`;

foreach my $package($rpm_query) {
print $FILE "$package\n";
}

close $FILE;

Inizialmente, avevo impostato alcune variabili di ambiente per recuperare determinate informazioni sul sistema, le quali funzionano correttamente quando lo script viene avviato nell'ambiente di login ma non quando invocato da cron,
ho immaginato quindi che non tutte le variabili sono disponibili in un ambiente diverso da quello dell'utente. In rete ho trovato un bel pò di discussioni al riguardo ma sinceramente non ho ben capito il metodo per risolvere il problema.
Grazie a chiunque voglia aiutarmi

Bigjohnson

unread,
May 15, 2012, 4:47:28 PM5/15/12
to
Con che utente esegui lo script con cron?
E' lo stesso che usi quando invochi il comando tramite shell?
Come e dove le hai impostate ste variabili d'ambiente?
Tutto dipende anche da che sistema operativo/ distribuzione linux usi.

Alberto

Antonello Collini

unread,
May 21, 2012, 11:57:47 AM5/21/12
to
È lo stesso utente sia nel caso venga avviato da cron che nel caso venga avviato dalla shell.
Il problema è proprio questo. Ho usato il comandi di sistema "hostname" e "uname -m" per recuperare quei valori che avrei voluto ottenere invece con $ENV{'HOSTNAME'} e $ENV{'HOSTTYPE'}, queste funzionano correttamente qualora lo script venga avviato dalla shell ma non da cron.
Quanto al sistema uso openSUSE.

enoquick

unread,
May 21, 2012, 4:48:55 PM5/21/12
to
L' utente è lo stesso ma non mi risulta che cron esegua anche .bashrc
, il quale viene eseguito se esegui un login classico

0 new messages