This commit is contained in:
6543 2018-03-26 14:44:52 +02:00
parent c104efb93a
commit 819ade4198

View File

@ -1,81 +1,53 @@
#!/bin/bash
#@version 1.6.0
#@version 1.7.0
#@autor Martin.Huber@stbaro.bayern.de
#@date 2017-06-14
#@date 2017-06-16

#####################################################################################
################## S e t t i n g s ##################################################
#####################################################################################

## MODU

modus_default=newiso

#CD/DVD
#entweder iso_source oder filesystem_source alls quelle
# -> bei iso gen erforderlich!
iso_source="/data/remaster/desinfect-2017.iso"
#destination optinal
iso_destination="/data/remaster/result/custom_desinfect_`date '+%Y-%m-%d'`.iso"
iso_lable="DESINFECT_`date '+%Y-%m-%d'`"

#Filesystem (for pxe)
#entweder iso_source oder filesystem_source alls quelle
filesystem_source="/data/remaster/result/filesystem.squashfs"

#Network
proxy_host="proxy.local"
proxy_port="8080"
domain="local"
nameserver="10.x.x.2,10.x.x.1"

#remaster_script
distro="desinfect2017"

#LOG
log_file="/data/remaster/logs/`date '+%Y-%m-%d'`.log"
log_mail_source="desinfect@email.clocal"
log_mail_aim="6543@email.clocal"
log_mail_subject="Desinfect_Remaster"

#Sonstiges
tools_list="clamav nano htop nmon iftop tmux dsniff nmap openssh-server tightvncserver rsync e2fsprogs foremost gddrescue recoverjpeg safecopy sleuthkit testdisk arp-scan apt-transport-https"


### Modes ###
#####################################################################################
################## M o d e s ########################################################
#####################################################################################

function main_newiso() {

#####################################################################################
################## S e t t i n g s ##################################################
#####################################################################################
#CD/DVD
#entweder iso_source oder filesystem_source alls quelle
# -> bei iso gen erforderlich!
iso_source="/data/remaster/desinfect-2017.iso"
#destination optinal
iso_destination="/data/remaster/result/custom_desinfect_`date '+%Y-%m-%d'`.iso"
iso_lable="DESINFECT_`date '+%Y-%m-%d'`"

#Filesystem (for pxe)
#entweder iso_source oder filesystem_source alls quelle
filesystem_source=""
#destination optinal
filesystem_destination="/data/remaster/result/filesystem.squashfs"

#Network
proxy_host="proxy.local"
proxy_port="8080"
domain="local"
nameserver="10.x.x.2,10.x.x.1"

#remaster_script
distro="desinfect2017"

#LOG
log_file="/data/remaster/logs/`date '+%Y-%m-%d'`.log"
log_mail_source="desinfect@email.clocal"
log_mail_aim="6543@email.clocal"
log_mail_subject="Desinfect_Remaster"

#Sonstiges
tools_list="clamav nano htop nmon iftop tmux dsniff nmap openssh-server tightvncserver rsync e2fsprogs foremost gddrescue recoverjpeg safecopy sleuthkit testdisk arp-scan apt-transport-https"



#####################################################################################
################## R u n ############################################################
#####################################################################################

#on_exit [error_level]
function on_exit() {
#send log and errorlevel[success/errorr xy]

if [ "$1" != "0" ]; then
log_mail_subject="$log_mail_subject [ERROR]"
else
log_mail_subject="$log_mail_subject [Success]"
fi

#Mail Body:
for mail_aim in `echo "$log_mail_aim" | tr "," " "`; do
{
echo "$log_mail_subject"
echo $'####################################################################################\n\n'
cat "$log_file"
} | sendemail -s mail.stbv.bybn.de -f desinfect@bayern.de -t "$mail_aim" -u "$log_mail_subject" -o tls=no
done

[ "$1" != "0" ] && {
chroot_umount$distro "$chroot_path" 2> /dev/null
workspace_erase "$iso_extr_dir/" "$chroot_path/" 2> /dev/null
}
exit $1
}

{
[ -f "$log_file" ] || touch "$log_file"
tail -f "$log_file" --pid="$$" &

@ -96,7 +68,6 @@ function main_newiso() {

echo "#Filesystem (for pxe)" >> "$log_file"
echo "filesystem_source=\"$filesystem_source\"" >> "$log_file"
echo "filesystem_destination=\"$filesystem_destination\"" >> "$log_file"
echo >> "$log_file"

echo "#Network" >> "$log_file"
@ -171,7 +142,7 @@ function main_newiso() {
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"

#addo ClamAV to conky_info
sed -i "s/\#\ \$\{color\ white\}/\ \$\{color\ white\}/g" "$chroot_path/etc/skel/.conkyrc"
sed -i 's/# ${color white}ClamAV/ ${color white}ClamAV/g' "$chroot_path/etc/skel/.conkyrc"

chroot_clean "$chroot_path" >> "$log_file"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"
@ -201,18 +172,20 @@ function main_newiso() {
filesystem_pack "$chroot_path" "$filesystem_img" >> "$log_file"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"

# wenn iso gewünscht
[ "$iso_destination" != "" ] && {
iso_create$distro "$chroot_path" "$iso_extr_dir" "$iso_destination" "$iso_lable" >> "$log_file"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"
}


# wenn filesystem gewünscht dann
[ "$filesystem_destination" != "" ] && {
# wenn filesystem gewünscht
[ "$filesystem_source" != "" ] && {
#wen bereits forhanden dann löschen
[ -f "$filesystem_destination" ] && rm "$filesystem_destination"
cp "$filesystem_img" "$filesystem_destination" >> "$log_file"
[ -f "$filesystem_source" ] && rm "$filesystem_source"
cp "$filesystem_img" "$filesystem_source" >> "$log_file"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"

chmod 666 "$filesystem_destination"
chmod 666 "$filesystem_source"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"
}

@ -223,68 +196,10 @@ function main_newiso() {


on_exit 0
}
}

function main_desinfect_pxe_update() {

#####################################################################################
################## S e t t i n g s ##################################################
#####################################################################################
#Filesystem (from pxe)
filesystem_img="/data/remaster/result/filesystem.squashfs"

#Network
domain="stmi.bayern.de"
nameserver="10.173.230.81,10.173.27.82"

#remaster_script
distro="desinfect2016"

#LOG
log_file="/data/remaster/logs/`date '+%Y-%m-%d'`.log"
log_mail_source="desinfect@stbaro.bayern.de"
#log_mail_source="`hostname`@stbaro.bayern.de"
log_mail_aim="Martin.Huber@stbaro.bayern.de"
log_mail_subject="Desinfect_Remaster"

#Sonstiges
tools_list="nano htop nmon iftop tmux dsniff nmap openssh-server tightvncserver rsync e2fsprogs foremost gddrescue recoverjpeg safecopy sleuthkit testdisk arp-scan"



#####################################################################################
################## R u n ############################################################
#####################################################################################

#on_exit [error_level]
function on_exit() {
#send log and errorlevel[success/errorr xy]

if [ "$1" != "0" ]; then
log_mail_subject="$log_mail_subject [ERROR]"
else
log_mail_subject="$log_mail_subject [Success]"
fi

#Mail Body:
for mail_aim in `echo "$log_mail_aim" | tr "," " "`; do
{
echo "$log_mail_subject"
echo $'####################################################################################\n\n'
cat "$log_file"
} | sendemail -s mail.stbv.bybn.de -f desinfect@bayern.de -t "$mail_aim" -u "$log_mail_subject" -o tls=no
done

[ "$1" != "0" ] && {
chroot_umount$distro "$chroot_path" 2> /dev/null
workspace_erase "$iso_extr_dir/" "$chroot_path/" 2> /dev/null
}

exit $1
}

{
[ "$log_file" == "" ] && log_file="`mktemp`"
[ -f "$log_file" ] || touch "$log_file"
tail -f "$log_file" --pid="$$" &
@ -298,7 +213,7 @@ function main_desinfect_pxe_update() {

echo "### S e t t i n g s ###" >> "$log_file"
echo "#Filesystem (for pxe)" >> "$log_file"
echo "filesystem_img=\"$filesystem_img\""
echo "filesystem_source=\"$filesystem_source\""
echo >> "$log_file"

echo "#Network" >> "$log_file"
@ -335,12 +250,12 @@ function main_desinfect_pxe_update() {
[ "$distro" != "" ] && distro="_$distro"

# 1. Entpacken der Dateien des Live-Systems
[ -e "$filesystem_img" ] || {
echo "### ERROR ### \"$filesystem_img\" does not exist!" >> "$log_file"
[ -e "$filesystem_source" ] || {
echo "### ERROR ### \"$filesystem_source\" does not exist!" >> "$log_file"
on_exit 15 >> "$log_file"
}

filesystem_extract "$filesystem_img" "$chroot_path" >> "$log_file"
filesystem_extract "$filesystem_source" "$chroot_path" >> "$log_file"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"

# 2. Vorbereiten für chroot-Umgebung:
@ -376,13 +291,13 @@ function main_desinfect_pxe_update() {
}

# 5. Packen und Ersetzen der Dateien
rm "$filesystem_img" >> "$log_file"
rm "$filesystem_source" >> "$log_file"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"

filesystem_pack "$chroot_path" "$filesystem_img" >> "$log_file"
filesystem_pack "$chroot_path" "$filesystem_source" >> "$log_file"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"

chmod 777 "$filesystem_img" >> "$log_file"
chmod 777 "$filesystem_source" >> "$log_file"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"

workspace_erase "$chroot_path/" >> "$log_file"
@ -390,80 +305,9 @@ function main_desinfect_pxe_update() {


on_exit 0
}
}

function main_test() {

#####################################################################################
################## S e t t i n g s ##################################################
#####################################################################################
#CD/DVD
#entweder iso_source oder filesystem_source alls quelle
# -> bei iso gen erforderlich!
iso_source="/data/remaster/desinfect-2016.iso"
#destination optinal
iso_destination="/data/remaster/result/custom_desinfect_`date '+%Y-%m-%d'`.iso"
iso_lable="DESINFECT_`date '+%Y-%m-%d'`"

#Filesystem (for pxe)
#entweder iso_source oder filesystem_source alls quelle
filesystem_source=""
#destination optinal
filesystem_destination="/data/remaster/result/filesystem.squashfs"

#Network
proxy_host="www-proxy.bybn.de"
proxy_port="80"
domain="stmi.bayern.de"
nameserver="10.173.230.81,10.173.27.82"

#remaster_script
distro="desinfect2016"

#LOG
log_file="/data/remaster/logs/`date '+%Y-%m-%d'`.log"
log_mail_source="desinfect@stbaro.bayern.de"
log_mail_aim="Martin.Huber@stbaro.bayern.de"
log_mail_subject="Desinfect_Remaster"

#Sonstiges
tools_list="nano htop nmon iftop tmux dsniff nmap openssh-server tightvncserver rsync e2fsprogs foremost gddrescue recoverjpeg safecopy sleuthkit testdisk arp-scan"



#####################################################################################
################## R u n ############################################################
#####################################################################################

#on_exit [error_level]
function on_exit() {
#send log and errorlevel[success/errorr xy]

if [ "$1" != "0" ]; then
log_mail_subject="$log_mail_subject [ERROR]"
else
log_mail_subject="$log_mail_subject [Success]"
fi

#Mail Body:
for mail_aim in `echo "$log_mail_aim" | tr "," " "`; do
{
echo "$log_mail_subject"
echo $'####################################################################################\n\n'
cat "$log_file"
} | sendemail -s mail.stbv.bybn.de -f desinfect@bayern.de -t "$mail_aim" -u "$log_mail_subject" -o tls=no
done

[ "$1" != "0" ] && {
chroot_umount$distro "$chroot_path" 2> /dev/null
workspace_erase "$iso_extr_dir/" "$chroot_path/" 2> /dev/null
}

exit $1
}

{
[ "$log_file" == "" ] && log_file="`mktemp`"
[ -f "$log_file" ] || touch "$log_file"
tail -f "$log_file" --pid="$$" &
@ -486,7 +330,7 @@ function main_test() {

echo "#Filesystem (for pxe)" >> "$log_file"
echo "filesystem_source=\"$filesystem_source\""
echo "filesystem_destination=\"$filesystem_destination\""
echo "filesystem_source=\"$filesystem_source\""
echo >> "$log_file"

echo "#Network" >> "$log_file"
@ -597,7 +441,7 @@ function main_test() {

## Normal END ##

[ "$filesystem_destination" != "" ] && filesystem_img="$filesystem_destination"
[ "$filesystem_source" != "" ] && filesystem_img="$filesystem_source"

### 9. Packen und Ersetzen der Dateien des Live-Systems
[ -f "$filesystem_img" ] && rm "$filesystem_img" 2>> "$log_file" >> "$log_file"
@ -625,8 +469,8 @@ function main_test() {


# wenn filesystem gewünscht dann
[ "$filesystem_destination" != "" ] && {
chmod 777 "$filesystem_destination"
[ "$filesystem_source" != "" ] && {
chmod 777 "$filesystem_source"
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"
}

@ -634,7 +478,6 @@ function main_test() {
error_level="$?"; [ "$error_level" != "0" ] && on_exit $error_level >> "$log_file"

on_exit 0
}
}


@ -642,6 +485,88 @@ function main_test() {
################## F u n c t i o n s ################################################
#####################################################################################

### Error Handlings ###

#on_exit [error_level]
function on_exit() {
#send log and errorlevel[success/errorr xy]

if [ "$1" != "0" ]; then
log_mail_subject="$log_mail_subject [ERROR]"
else
log_mail_subject="$log_mail_subject [Success]"
fi

#Mail Body:
for mail_aim in `echo "$log_mail_aim" | tr "," " "`; do
{
echo "$log_mail_subject"
echo $'####################################################################################\n\n'
cat "$log_file"
} | sendemail -s mail.stbv.bybn.de -f desinfect@bayern.de -t "$mail_aim" -u "$log_mail_subject" -o tls=no
done

[ "$1" != "0" ] && {
chroot_umount$distro "$chroot_path" 2> /dev/null
workspace_erase "$iso_extr_dir/" "$chroot_path/" 2> /dev/null
}
exit $1
}

#error_code [error_level]
function error_code() {
code="$1"
case $code in
"")
echo $'ID:\tDescription\n----------------------------------------------------\n1\tAllgemeiner Fehler\n2\tNo Paramters / wrong parameters'
echo $'3\tWrong Settings\n4\tProgramm missing\n\n10\tno root\n11\tfile no found\n12\tdir not found\n13\tcant create/delete file/dir'
echo $'14\tcorrupt file (unsquashfs, mount iso, ...)\n15\twrong file (iso has no squashfs-file ...)\n\n20\tmount error\n21\tunmoun error\n22\twrong filesystem'
;;
1)
echo "Allgemeiner Fehler"
;;
2)
echo "No Paramters / wrong parameters"
;;
3)
echo "Wrong Settings"
;;
4)
echo "Programm missing"
;;
10)
echo "not executed as Root"
;;
11)
echo "file no found"
;;
12)
echo "dir not found"
;;
13)
echo "cant create/delete file/dir"
;;
14)
echo "corrupt file (unsquashfs, mount iso, ...)"
;;
15)
echo "wrong file (iso has no squashfs-file ...)"
;;
20)
echo "tmount error"
;;
21)
echo "unmoun error"
;;
22)
echo "wrong filesystem"
;;
*)
echo $'No Defined Error Code.\nPerhaps an Error ocure on a Command wich was started by this Skritp.'
;;
esac
}

### Workspace ###

#workspace_erase [workspace_path]
@ -679,7 +604,7 @@ function filesystem_extract() {
}

[ "`filesystem_get_type $chroot_path`" != "ext4" ] && [ "`filesystem_get_type $chroot_path`" != "btrfs" ] && {
echo "### ERROR ### filesystem_extract: incorect filesystem (`filesystem_get_type $chroot_path`)!"
echo "### ERROR ### filesystem_extract: wrong filesystem (`filesystem_get_type $chroot_path`)!"
return 22
}

@ -1699,11 +1624,9 @@ function tools_add_desinfect2017() {

### Handle Parameters & Modes ###

#wenn kein modus angegebnen: default modus
if [ -z "$1" ]; then
main_newiso
#main_desinfect_pxe_update
#main_test

main_$modus_default
else
main_$1
fi