/[cvs]/jonen/perl/scripts/sysTools/debian/apt-get_remote.pl
ViewVC logotype

Annotation of /jonen/perl/scripts/sysTools/debian/apt-get_remote.pl

Parent Directory Parent Directory | Revision Log Revision Log


Revision 1.3 - (hide annotations)
Mon Feb 3 10:42:10 2003 UTC (21 years, 5 months ago) by jonen
Branch: MAIN
Changes since 1.2: +2 -1 lines
File MIME type: text/plain
+ another bugfix (sorry, but my orginal script was destroyed by a mistake of myself, arrggg.. ;)

1 jonen 1.1 #!/usr/bin/perl
2     ######################################
3 jonen 1.2 # $Id: apt-get_remote.pl,v 1.1 2003/02/03 10:04:56 jonen Exp $
4 jonen 1.1 ######################################
5 jonen 1.2 # $Log: apt-get_remote.pl,v $
6     # Revision 1.1 2003/02/03 10:04:56 jonen
7     # + first init
8     #
9 jonen 1.1 #
10     ######################################
11    
12    
13     =pod
14    
15     =head2 apt-get_remote.pl - remote apt-get via mail, web etc.
16    
17     Sebastian Utz S<seut@netfrag.org>
18    
19     B<last changes>
20    
21 jonen 1.2 $Id: apt-get_remote.pl,v 1.1 2003/02/03 10:04:56 jonen Exp $
22 jonen 1.1
23     =head3 Description
24    
25     Currently, it generates only filtered output of 'apt-get update; apt-get --dry-run upgrade' to e.g. mail via cronjob to some user.
26    
27     =head3 ToDo
28    
29     o generates html output and replace 'o' with e.g. a 'checkbox'
30     o add action to do a upgrade to all packages
31     o make this available via http
32     o get response via mail, http, etc. and check selected packages
33     o install selected packages
34     o some more functions:
35     o generate list of all installed packages
36     o generate list of all not-installed packages
37     o generate list of all 'old' packages
38     o generate list of all '-dev' and unused packages
39    
40    
41     =cut
42    
43    
44     use strict;
45     use warnings;
46    
47     use Data::Dumper;
48     use Sys::Hostname;
49    
50     my $hostname = hostname();
51    
52     my $apt_get = "/usr/bin/apt-get";
53     my $apt_update = $apt_get . " update";
54     my $apt_upgrade = $apt_get . " -y upgrade";
55     my $apt_dry_upgrade = $apt_get . " --dry-run upgrade";
56    
57     my $result = `$apt_dry_upgrade`;
58    
59     my @raw_data = split("\n", $result);
60    
61     my @new_lines;
62    
63     push @new_lines, "Checking for upgrade available packages for '". $hostname . "':\n";
64    
65     my $count_lines = $#raw_data;
66     my $cnt = 1;
67     foreach(@raw_data) {
68     if($_ =~ /^\s\s/ ) {
69     s/^\s\s/ /;
70     my @packages = split(" ", $_);
71     foreach(@packages) {
72     push @new_lines, " o " . $_;
73     }
74     }
75     elsif($_ =~ /packages upgraded,/ ) {
76     push @new_lines, $_;
77     if($raw_data[$cnt] =~ /or removed\.$/) {
78     push @new_lines, $raw_data[$cnt];
79     splice(@raw_data, $cnt, 1);
80     }
81     push @new_lines, "\n";
82     push @new_lines, "New Packages available for upgrade:";
83     }
84     elsif( $_ =~ /^Inst/ ) {
85 jonen 1.3 s/^Inst/ " o "/;
86     push @new_lines,$_;
87 jonen 1.1 }
88     elsif( $_ !~ /^Conf/ ) {
89 jonen 1.2 push @new_lines, $_;
90 jonen 1.1 }
91     if($cnt == $count_lines) {
92     push @new_lines, "\n\n";
93     }
94     $cnt++;
95     }
96    
97    
98     print join("\n", @new_lines);

MailToCvsAdmin">MailToCvsAdmin
ViewVC Help
Powered by ViewVC 1.1.26 RSS 2.0 feed