Files
linuxsetup/setup.debian1x
Michael Wesemann 235f8ce1b0 [mike@mwxm4]
2026-08-10 16:48:04 +02:00

117 lines
2.9 KiB
Perl
Executable File

#!/usr/bin/perl
use Getopt::Std;getopts('z');
system("userdel ppb; rm -rf /home/ppb") if (-d "/home/ppb");
system("userdel mike; rm -rf /home/mike") if (-d "/home/mike");
&ai('dnsutils','net-tools','zsh','joe','rsync','curl','fuse','libwww-perl',
'libterm-readline-perl-perl','libterm-readpassword-perl','libdbd-mysql-perl','ntp',
'libjson-perl','jq','unzip','7zip');
if ($opt_z) {
if (-x "/usr/bin/zsh") {
system("chsh root -s /usr/bin/zsh");
}
}
system("locale-gen C.UTF-8");
system("mkdir /db");
system("mkdir /db/bin");
system("mkdir /db/backup");
system("mkdir /db/backup/mysql");
system("mkdir /db/tmp");
system("mkdir /db/log");
system("mkdir /db/lib");
system("mkdir /db/data");
system("mkdir /db/etc");
system("mkdir /db/src");
system("mkdir /db/upload");
system("chmod 777 /db/tmp");
system("chmod 777 /db/log");
system("chmod 777 /db/upload");
system("mkdir -p ~/.joe/colors/");
system("cp ./files/default.jcf ~/.joe/colors/default.jcf");
system("cp ./files/joerc4 /root/.joerc");
system("cp ./files/csh.cshrc /etc");
system("cp ./files/rc.local.debian /etc/rc.local");
system("chmod 755 /etc/rc.local");
system("cp ./files/myuser /db/bin");
system("cp ./files/mybackup /db/bin");
system("cp ./files/dx /db/bin");
system("cp ./files/gx /db/bin");
system("cp ./files/gy /db/bin");
system("cp ./files/telemetry /db/bin");
system("cp ./files/rt /db/bin");
system("cp ./files/mgsh /db/bin");
system("cp ./files/locale /etc/default/locale");
system("./upd https://git.micw.org/mike/dx -i /db/bin");
system("cp ./files/zshrc /etc/zsh/zshrc");
system("rm /etc/motd; touch /etc/motd");
system("mkdir /root/.ssh") if (!-d "/root/.ssh");
&readak("/root/.ssh/authorized_keys");
&readak("./files/authorized_keys");
open(OUT,"> /root/.ssh/authorized_keys");
for (sort(keys(%K))) {print OUT "$_\n" if (!/^\s*$/);}
close(OUT);
sub readak() {
my($file)=@_;
if (-f $file) {open(IN,$file);while(<IN>) {chomp();$K{$_}=$_;}close(IN);}
}
system("chmod 700 /root/.ssh");
system("chmod 600 /root/.ssh/authorized_keys");
if (!$opt_x) {
system("/usr/bin/apt-get update");
system("/usr/bin/apt-get upgrade");
if (is_debian_13_or_later()) {
system("cp ./files/timesyncd.conf /etc/systemd/");
} else {
system("service ntp stop");
system("/usr/sbin/ntpd -gq");
system("service ntp start");
}
}
sub ai {
my @pkgs=@_;
for (@pkgs) {
system("/usr/bin/apt-get -y install $_");
}
}
sub is_debian_13_or_later {
return 0 unless -r '/etc/os-release';
my %os_release;
open(my $fh, '<', '/etc/os-release') or return 0;
while (my $line = <$fh>) {
chomp $line;
if ($line =~ /^([A-Z_]+)=(.*)$/) {
my ($key, $val) = ($1, $2);
$val =~ s/^"|"$//g;
$os_release{$key} = $val;
}
}
close($fh);
return 0 unless ($os_release{ID} // '') eq 'debian';
return 0 unless ($os_release{VERSION_ID} // '') =~ /^(\d+)/;
return $1 >= 13 ? 1 : 0;
}