K2LL33D SHELL

 Apache/2.4.7 (Ubuntu)
 Linux sman1baleendah 3.13.0-24-generic #46-Ubuntu SMP Thu Apr 10 19:11:08 UTC 2014 x86_64
 uid=33(www-data) gid=33(www-data) groups=33(www-data)
 safemode : OFF
 MySQL: ON | Perl: ON | cURL: OFF | WGet: ON
  >  / usr / bin /
server ip : 172.67.156.115

your ip : 172.71.254.223

H O M E


Filename/usr/bin/gen-preseed
Size2.51 kb
Permissionrwxr-xr-x
Ownerroot : root
Create time27-Apr-2025 09:53
Last modified12-Dec-2013 06:17
Last accessed05-Jul-2025 16:42
Actionsedit | rename | delete | download (gzip)
Viewtext | code | image
#!/usr/bin/perl

=head1 NAME

gen-preseed -- output preseed based on installation debconf DB

=head1 SYNOPSIS

gen-preseed

=head1 DESCRIPTION

Output a preseed file based on the installation debconf DB.
This requires /var/log/installer/cdebconf to exist.

=cut

use strict;
use warnings;
use Debconf::Db;
use Debconf::Template;
use Debconf::Question;

# A bit of a hack..
my $di_path;
if (-d "/var/log/installer") {
$di_path="/var/log/installer/cdebconf";
} else {
$di_path="/var/log/debian-installer/cdebconf";
}

if (! -f "$di_path") {
print("Unable to find debconf database: $di_path\n");
exit(1);
}

Debconf::Db->load(readonly => "true");

$Debconf::Db::config=Debconf::Db->makedriver(
driver => "File",
name => "di_questions",
filename => "$di_path/questions.dat",
readonly => "true",
);
$Debconf::Db::templates=Debconf::Db->makedriver(
driver => "File",
name => "di_templates",
filename => "$di_path/templates.dat",
readonly => "true",
);

my $defaultowner="d-i";
my @blacklist = (
# No partitioning preseeding at this point
"partman-",

# d-i state
"clock-setup/system-time-changed",
"debian-installer/main-menu",

# Value depends on hardware
"netcfg/choose_interface",

# Value depends on install media
"base-installer/kernel/image",
"base-installer/kernel/override-image",
"cdrom/codename",
"cdrom-detect/cdrom_device",
"hw-detect/select_modules",
"preseed/file",
);
my $qi = Debconf::Question->iterator;

my @keys = ();

while (my $q = $qi->iterate) {
my ($name, $type, $value, $default) = ($q->name, $q->type, $q->value, $q->default);
next if ($default eq $value);
next if (! length $type || $type eq 'text' || $type eq 'title');

my $skip = 0;
foreach (@blacklist) {
if ($name =~ m/^$_/) {
$skip = 1;
}
}
next if ($skip eq 1);

if ($q->owners) {
foreach my $owner (split ", ", $q->owners) {
push(@keys, "$owner\t$name\t$type\t$value\n");
}
}
else {
push(@keys, "$defaultowner\t$name\t$type\t$value\n");
}
}

foreach(sort(@keys)) {
print "$_";
}

=head1 AUTHOR

Written by:
Stéphane Graber <[email protected]>

Based on debconf-get-selections by:
Petter Reinholdtsen <[email protected]>

=cut