[[http://tmade.de|Home tmade.de]]
[[http://wiki.tmade.de|Home Wiki]]
===== Scripts =====
In this area you´ll find some usefull scripts.
==== Filecheck ====
The following script will check whether a file in a directory isn´t older than 65 minutes and not smaller than 250k
#!/bin/sh
t=0
first_check ()
{
timestamp=`/usr/bin/find /opt/backup/mysql_hourly/* -mmin -65 | wc -l`
if [ $timestamp -ne "0" ]
then
echo "Actual file exists" 1> /dev/null
size=`/usr/bin/find /opt/backup/mysql_hourly/* -size -250k | wc -l`
if [ $size -eq "0" ]
then
echo "Backup is working" 1> /dev/null
t=1
else
echo "Backup has failed - filesize < 250k" 1> /dev/null
fi
else
echo "Backup has failed - file timestamp > 65 minutes" 1> /dev/null
fi
}
second_check ()
{
timestamp=`/usr/bin/find /opt/backup/mysql_hourly/* -mmin -65 | wc -l`
if [ $timestamp -ne "0" ]
then
echo "Actual file exists" 1> /dev/null
size=`/usr/bin/find /opt/backup/mysql_hourly/* -size -250k | wc -l`
if [ $size -eq "0" ]
then
echo "Backup is working" 1> /dev/null
else
echo "`date` Backup has failed - filesize < 250k" >> /var/log/test_backup_errorlog
fi
else
echo "`date` Backup has failed - file timestamp > 65 minutes" >> /var/log/test_backup_errorlog
fi
}
inuse=1
while [ $inuse -ne "0" ]
do
inuse=`lsof +D /opt/backup/mysql_hourly/ | wc -l`
if [ $inuse -eq "0" ]
then
first_check
if [ $t -eq "0" ]
then
second_check
else
echo "Backup is working" 1> /dev/null
fi
fi
sleep 20
done
==== (W)LAN check ====
Check (W)LAN adapter and reset if necessary:
#!/bin/sh
##################################################################
#
# Title: check_wlan0
#
# Script checks to see if WiFi has a network IP and if not
# restart WiFi
#
# Uses a lock file which prevents the script from running more
# than one at a time. If lockfile is old, it removes it
#
# Instructions:
#
# o Install where you want to run it from like /usr/local/bin
# o chmod 0755 /usr/local/bin/check_wlan0.sh
# o Add to crontab
#
# Run Every 5 mins - Seems like ever min is over kill unless
# this is a very common problem. If once a min change */5 to *
# once every 2 mins */5 to */2 ...
#
# */5 * * * * /usr/local/bin/check_wlan0.sh
#
##################################################################
# Settings
# Where and what you want to call the Lockfile
lockfile='/var/run/check_wlan0.pid'
#logger "logfile: $lockfile"
# Which Interface do you want to check/fix
# Example: wlan0, eth0, etc.
wlan='wlan0'
##################################################################
echo
echo "check: $wlan"
#date
echo
# Check to see if there is a lock file
if [ -e $lockfile ]; then
# A lockfile exists... Lets check to see if it is still valid
pid=`cat $lockfile`
if kill -0 &>1 > /dev/null $pid; then
# Still Valid... lets let it be...
echo "Process still running, Lockfile valid"
exit 1
else
# Old Lockfile, Remove it
echo "Old lockfile, Removing Lockfile"
rm $lockfile
fi
fi
# If we get here, set a lock file using our current PID#
#echo "Setting Lockfile"
echo $$ > $lockfile
# We can perform check
echo "Performing Network check for $wlan"
#if ifconfig $wlan | grep -q "inet addr:" ; then
if /sbin/ifconfig $wlan | /bin/grep "inet addr:" ; then
echo "Network is Okay"
#logger "Network is Okay"
else
echo "Network connection down! Attempting reconnection."
/sbin/ifdown $wlan
logger "Network connection down! Attempting reconnection."
logger "ifdown $wlan - sleep 5"
/bin/sleep 5
/sbin/ifup --force $wlan
/sbin/ifconfig $wlan | grep "inet addr"
logger `/sbin/ifconfig $wlan | grep "inet addr"`
/bin/sleep 5
fi
echo
echo "Current Setting:"
ifconfig $wlan | grep "inet addr:"
echo
# Check is complete, Remove Lock file and exit
echo "process is complete, removing lockfile"
rm $lockfile
exit 0
##################################################################
# End of Script
##################################################################
https://lunetikk.de/doku.php?id=linux:raspberry:raspbian:troubleshooting
==== Nagios/ Icinga ====
Script for passiv check with nsca:
#/bin/sh
#LOGDIR="/var/log/rsyslog"
#LOGDIR2="/var/log/rsyslog/cas"
NSCA_BIN="/usr/sbin/send_nsca"
NSCA_CONF="/etc/send_nsca.cfg"
TIMEOUT="10"
ICINGA_SERVER="192.168.63.25"
ICINGA_CHECK="Backup Status Check"
#DATE=`date +%a`
DATE=`date +%d.%m.%y`
#COUNTER=0
SERVER="`hostname`"
BACKUPLOG="/backup/log/backup.log"
ERRORLOG="/backup/log/error.log"
#OUTPUT=$RESULT
if [ ! -e $BACKUPLOG ]
then
RESULT=1
/bin/echo $MESSAGE
/bin/echo "File doesn´t exist, RESULT= $RESULT"
/bin/echo -e "$SERVER\t$ICINGA_CHECK\t$RESULT\t$MESSAGE\n" | $NSCA_BIN -H $ICINGA_SERVER -c $NSCA_CONF
else
RESULT=0
MESSAGE="Backup Successfully"
/bin/echo $MESSAGE
/bin/echo "File exists, RESULT= $RESULT"
if [ ! -s $BACKUPLOG ]
then
RESULT=1
MESSAGE="Backup failed"
/bin/echo "BACKUPLOG empty RESULT= $RESULT (expected 1)"
/bin/echo -e "$SERVER\t$ICINGA_CHECK\t$RESULT\t$MESSAGE\n" | $NSCA_BIN -H $ICINGA_SERVER -c $NSCA_CONF
exit 1
else
RESULT=0
MESSAGE="Backup Successfully"
/bin/echo "Errorlog with content: $MESSAGE"
/bin/echo $MESSAGE
/bin/echo "BACKUPLOG with content, RESULT= $RESULT (expected 0)"
if [ -s $ERRORLOG ]
then
RESULT=1
MESSAGE="Backup failed"
/bin/echo "Errorlog with content: $MESSAGE"
/bin/echo -e "$SERVER\t$ICINGA_CHECK\t$RESULT\t$MESSAGE\n" | $NSCA_BIN -H $ICINGA_SERVER -c $NSCA_CONF
fi
fi
fi
==== Backup & Recovery Linux ====
===Backup ===
#!/bin/bash
#author: Thomas Roehm
#version: 1.2
BACKUPDIR="/mnt/backup/raspberrypi/backup"
LOGFILE="${BACKUPDIR}/`hostname -f`/backup.log"
mkdir ${BACKUPDIR} 2> /dev/null
#echo "mounting share to backup-server"
##########################################################################################
#mount backup-device######################################################################
##########################################################################################
#mount -t cifs -o lfs //hostname.local/linux_images ${BACKUPDIR} -o username=tmade
#if [ $? -ne "0" ]
#then
# echo "mounting device failed!"
# exit 1
#else
# echo "device on backup-server mounted"
#fi
###########################################################################################
#create backup-folder######################################################################
###########################################################################################
FILE=${BACKUPDIR}/`hostname -f`
if [ -d $FILE ]
then
echo "Backup of host '`hostname -f`' already exists."
echo "Rename it to '`hostname -f`.old'"
mv ${BACKUPDIR}/`hostname -f` ${BACKUPDIR}/`hostname -f`.old
#else
#echo "'$FILE' does not exist."
fi
mkdir ${BACKUPDIR}/`hostname -f`/ 2> /dev/null
cd ${BACKUPDIR}/`hostname -f`/
############################################################################################
#backup partition table (sd*-devices)#######################################################
############################################################################################
#fdisk -l 2> /dev/null |grep GB |cut -f2 -d ' ' |cut -f1 -d ':' |grep -v "/dev/dm" |grep -v "/dev/mapper" > hd
fdisk -l 2> /dev/null |grep -E '(G|i)B' |cut -f2 -d ' ' |cut -f1 -d ':' |grep -v "/dev/dm" |grep -v "/dev/mapper" |grep -v "loop" > hd
HDCOUNT=`cat hd |wc -l`
for ((i=1; i <=$HDCOUNT; i++))
do
j=0
hdarray=($(sed -n "$i"p hd))
echo "Device = ${hdarray[$j]}"
temp=${hdarray[$j]}
echo $temp | sed 's/\/dev\/sd/dev_sd/g'
t=`echo $temp | sed 's/\/dev\/sd/dev_sd/g'`
sfdisk -d ${hdarray[$j]} > ${t}_part_table
((j++))
done
############################################################################################
#backup partition table (/dev/cciss/c0d*-devices)###########################################
############################################################################################
HDCOUNT=`cat hd |wc -l`
for ((i=1; i <=$HDCOUNT; i++))
do
j=0
hdarray=($(sed -n "$i"p hd))
echo "Device = ${hdarray[$j]}"
temp=${hdarray[$j]}
echo $temp | sed 's/\/dev\/cciss\/c0d/dev_cciss_c0d/g'
t=`echo $temp | sed 's/\/dev\/cciss\/c0d/dev_cciss_c0d/g'`
sfdisk -d ${hdarray[$j]} > ${t}_part_table
((j++))
done
############################################################################################
#backup partition table (/dev/mmcblk*-devices)###########################################
############################################################################################
HDCOUNT=`cat hd |wc -l`
for ((i=1; i <=$HDCOUNT; i++))
do
j=0
hdarray=($(sed -n "$i"p hd))
echo "Device = ${hdarray[$j]}"
temp=${hdarray[$j]}
echo $temp | sed 's/\/dev\/mmcblk/dev_mmcblk/g'
t=`echo $temp | sed 's/\/dev\/mmcblk/dev_mmcblk/g'`
sfdisk -d ${hdarray[$j]} > ${t}_part_table
((j++))
done
rm hd
###########################################################################################
#pv_setup##################################################################################
###########################################################################################
pv_setup ()
{
echo "start function pv_setup"
###########################################################################################
#lvm-backup################################################################################
###########################################################################################
echo "creating lvm-backup"
vgcfgbackup --file ${BACKUPDIR}/`hostname -f`/%s_vgcfgbackup.bku
###########################################################################################
#count lvm-vg's############################################################################
###########################################################################################
VG_COUNT=`ls -al *vgcfgbackup.bku | wc -l`
###########################################################################################
#check LVM mounts/ lv's####################################################################
###########################################################################################
/bin/ls *vgcfgbackup.bku | sed 's/_vgcfgbackup.bku//g' > temp_vg
echo ######################################################################################
echo "following volume groups found on system:"
echo ""
cat temp_vg
echo ######################################################################################
for ((i=1; i <=$VG_COUNT; i++))
do
VG=`sed -n "$i"p temp_vg`
sed -n -e '/logical_volumes/,$p' ${VG}_vgcfgbackup.bku |grep -B 1 "id" |grep -v "id" |cut -f1 -d '{' |grep -v "-" |cut -f3 > lvm_mounts_vg_${VG}
done
rm temp_vg
}
###########################################################################################
#tar backup################################################################################
###########################################################################################
backup ()
{
cd ${BACKUPDIR}/`hostname -f`/
echo ""
pwd
echo ""
echo "creating tar-backup of all mountpoints"
echo ""
echo "creating root-backup:"
echo ""
tar -czf root.tgz --one-file-system / && EXIT=$(echo $?) || EXIT=$(echo $?)
if [ $EXIT -eq "0" ]
then
echo "root-backup created" >> summary
else
if [ $EXIT -eq "1" ]
then
echo "root-backup created with exit code \"$EXIT\" (files changed)" >> summary
else
echo "root-backup failed!" >> summary
fi
fi
#tar -czf root.tgz --ignore-failed-read --warning='no-file-ignored' --warning=no-file-changed --one-file-system --exclude '/opt/InteProxy-SERVER-1.0.4/*' / && echo "root-backup created" >> summary || echo "root-backup failed!" >> summary
echo ""
echo "creating var-backup:"
echo ""
tar -czf var.tgz --one-file-system --exclude '/var/splunk/*' --exclude '/var/oldlogs' /var && EXIT=$(echo $?) || EXIT=$(echo $?)
if [ $EXIT -eq "0" ]
then
echo "var-backup created" >> summary
else
if [ $EXIT -eq "1" ]
then
echo "var-backup created with exit code \"$EXIT\" (files changed)" >> summary
else
echo "var-backup failed!" >> summary
fi
fi
echo ""
echo "creating boot-backup:"
echo ""
tar -czf boot.tgz --one-file-system /boot && EXIT=$(echo $?) || EXIT=$(echo $?)
if [ $EXIT -eq "0" ]
then
echo "boot-backup created" >> summary
else
if [ $EXIT -eq "1" ]
then
echo "boot-backup created with exit code \"$EXIT\" (files changed)" >> summary
else
echo "boot-backup failed!" >> summary
fi
fi
echo "creating data-backup:"
echo ""
tar -czf data.tgz --one-file-system /data && EXIT=$(echo $?) || EXIT=$(echo $?)
if [ $EXIT -eq "0" ]
then
echo "data-backup created" >> summary
else
if [ $EXIT -eq "1" ]
then
echo "data-backup created with exit code \"$EXIT\" (files changed)" >> summary
else
echo "data-backup failed!" >> summary
fi
fi
echo "summary:"
echo "`date +%d.%m.%Y_%H.%M.%S`" | tee -a $LOGFILE
cat summary | tee -a $LOGFILE
rm summary
}
###########################################################################################
#check if lvm-devices are available########################################################
###########################################################################################
#pvscan > pv_temp
pvscan 2> /dev/null > pv_temp
grep PV pv_temp
if [ $? -ne "0" ]
then
echo "no physical volumes found"
rm pv_temp
backup
else
echo "physical volumes found"
rm pv_temp
pv_setup
backup
fi
===Recovery===
#!/bin/sh
echo "please enter hostname (fqdn) of the system to restore (without spaces!)"
read HOST;
echo "overview of existing devices and partitions:"
echo ""
cat /proc/partitions
echo ""
cat /proc/partitions > partitions_temp
grep sda1 partitions_temp || grep cciss/c0d0p1 partitions_temp
if [ $? == 1 ]
then
echo "no partitions on system found"
rm partitions_temp
else
echo "partitions on system found!"
echo "Please delete system-partitions with fdisk (check Wiki for instructions) and rerun the restore.sh script."
rm partitions_temp
exit 1
fi
echo ""
echo "overview of existing LVM-setup:"
echo ""
pvscan
vgscan
lvscan
echo ""
pvscan > pv_temp
grep PV pv_temp
if [ $? == 1 ]
then
echo "no physical volumes found"
rm pv_temp
else
echo "physical volumes found, please remove LVM-setup and rerun restore.sh"
rm pv_temp
exit 1
fi
echo "please enter device name to restore partition-table (without spaces!). example: sda , cciss/c0d0"
echo ""
read DEV;
DEV_FORM=`echo $DEV | sed 's/cciss\/c0d/cciss_c0d/g'`
cat /proc/partitions > /mnt/backup/${HOST}/check_part
grep cciss /mnt/backup/${HOST}/check_part
if [ $? == 1 ]
then
echo "sda-device found"
rm /mnt/backup/${HOST}/check_part
sfdisk --force /dev/$DEV < /mnt/backup/${HOST}/dev_${DEV}_part_table
else
echo "cciss-device found"
rm /mnt/backup/${HOST}/check_part
sfdisk --force /dev/$DEV < /mnt/backup/${HOST}/dev_${DEV_FORM}_part_table
fi
echo "please enter the name of the partition to restore LVM (without spaces!). example: sda2 , cciss/c0d0p2 , cciss/c0d1p2 ..."
echo ""
read PART;
echo "please enter the name of the volume-group to restore (without spaces!). example: system, data .."
echo ""
read PV;
echo "please enter the name of the boot-device (without spaces!). example: sda1 , cciss/c0d0p1 .."
echo ""
read BOOT;
ID=`grep -m 2 "id = " /mnt/backup/${HOST}/${PV}_vgcfgbackup.bku |tail -n 1 | cut -f2 -d'"'`
echo "ID=$ID"
echo "PV=$PV"
echo "DEV=$DEV"
echo "PART=$PART"
echo "restoring PV"
pvcreate --uuid $ID --restorefile /mnt/backup/${HOST}/${PV}_vgcfgbackup.bku /dev/$PART
echo "restoring VG/ LV"
vgcfgrestore --file /mnt/backup/${HOST}/${PV}_vgcfgbackup.bku $PV
vgchange -ay
lvscan
echo "format all devices:"
mkfs.ext3 -Lhome /dev/$PV/home
mkfs.ext3 -Lroot /dev/$PV/root
mkswap -Lswap /dev/$PV/swap
mkfs.ext3 -Ltmp /dev/$PV/tmp
mkfs.ext3 -Lusr /dev/$PV/usr
mkfs.ext3 -Lvar /dev/$PV/var
mkfs.ext3 -Lboot /dev/${BOOT}
echo "creating root-mountpoint"
echo""
mkdir /mnt/root
mount /dev/$PV/root /mnt/root
cd /mnt/root
echo "restoring root:"
tar -xzf /mnt/backup/$HOST/root.tgz
if [ $? == 1 ]
then
echo ################################################
echo "restore of root-backup failed"
echo ################################################
exit
else
echo ################################################
echo "root-backup restored"
echo ################################################
fi
echo "mounting var, usr, home, tmp, boot"
mount /dev/$PV/var var
mount /dev/$PV/usr usr
mount /dev/$PV/home home
mount /dev/$PV/tmp tmp
mount /dev/${BOOT} boot
echo ################################################
echo "restore var"
echo ################################################
tar -xzf /mnt/backup/$HOST/var.tgz
echo "var-backup restored"
echo ################################################
echo "restore usr"
echo ################################################
tar -xzf /mnt/backup/$HOST/usr.tgz
echo "usr-backup restored"
echo ################################################
echo "restore home"
echo ################################################
tar -xzf /mnt/backup/$HOST/home.tgz
echo "home-backup restored"
echo ################################################
echo "restore boot"
echo ################################################
tar -xzf /mnt/backup/$HOST/boot.tgz
echo "home-backup restored"
echo ################################################
echo "install mbr"
echo ################################################
grub --batch < /mnt/root/etc/udev/rules.d/70-persistent-net.rules
echo "70-persistent-net.rules edited"
fi
cd /
echo ""
umount /dev/$PV/var
umount /dev/$PV/usr
umount /dev/$PV/home
umount /dev/$PV/tmp
umount /dev/${BOOT}
umount /dev/$PV/root
echo ""
fsck /dev/$PV/var
fsck /dev/$PV/usr
fsck /dev/$PV/home
fsck /dev/$PV/tmp
fsck /dev/${BOOT}
fsck /dev/$PV/root
echo ""
echo "restore of $HOST done"
mount /dev/$PV/root /mnt/root
mount /dev/$PV/var var
mount /dev/$PV/usr usr
mount /dev/$PV/home home
mount /dev/$PV/tmp tmp
mount /dev/${BOOT} boot
chmod 1777 tmp
echo ""
echo "please remove (out-commenting) all non-system /mnt/root/etc/fstab entries with vi before restart the system! example: /opt/oracle , /opt/whatever/ ..."
==== add-vsftpd ====
To automate adding vsftpd-users on SLES11 and SLES12:
#!/bin/sh
LOGFILE="/var/log/add_vsftpd.log"
LOGERR="/var/log/add_vsftpd-error.log"
GREP=$(which grep)
ECHO=$(which echo)
USERADD=$(which useradd)
SYSTEMCTL=$(which systemctl 2> /dev/null)
CAT=$(which cat)
MAILADDR=""
FTPUID=3199
FTPUIDMIN=3150
ERROR=0
#Check OS Version
function f_checkOS ()
{
OS=$($GREP -i "VERSION" /etc/SuSE-release |cut -d " " -f3)
if [ "${OS}" -eq "11" ]
then
#$ECHO "Operating System = SLES$OS"
OFFVSFTPD=$(chkconfig vsftpd |cut -d " " -f3)
if [ "${OFFVSFTPD}" == "off" ]
then
$ECHO "add vsftpd to autostart"
/sbin/chkconfig vsftpd xinetd
OFFXINETD=$(/sbin/chkconfig xinetd |cut -d " " -f3)
fi
if [ "${OFFXINETD}" == "off" ]
then
$ECHO "add xinetd to autostart"
/sbin/chkconfig xinetd on
$ECHO "start xinetd"
/sbin/service xinetd restart
else
$ECHO "start xinetd"
/sbin/service xinetd restart
fi
else
#Check vsftpd enabled via xinetd
$GREP -i disable /etc/xinetd.d/vsftpd | $GREP -iq "^#"
T1=$?
if [ "${T1}" -ne "0" ] ;
then
$ECHO "enabling vsftpd"
sed -i '/disable/s|^|#|' /etc/xinetd.d/vsftpd
#else
#$ECHO "vsftpd is already enabled - nothing to do"
fi
XINETDSTAT=$(systemctl is-enabled xinetd.service)
if [ "${XINETDSTAT}" = "disabled" ]
then
#$ECHO "add xinetd to autostart"
$SYSTEMCTL enable xinetd.service
$ECHO "start xinetd"
$SYSTEMCTL restart xinetd.service
else
$ECHO "restart xinetd"
$SYSTEMCTL restart xinetd.service
fi
fi
}
function f_readftpinfos ()
{
#Useradd
read -p "Please enter the Ticketnumber: " TNUMBER
$ECHO "Ticketnumber \"$TNUMBER\" added!"
$ECHO ""
read -p "Please enter FTP-Username: " FTPUSER
$ECHO "FTP-Username \"$FTPUSER\" added!"
$ECHO ""
read -p "Please enter FTP-Userpassword: " FTPPW
$ECHO "FTP-Userpassword \"$FTPPW\" added!"
$ECHO ""
read -p "Please enter FTP-Userdescription: " FTPCOMMENT
$ECHO "FTP-Userdescription \"$FTPCOMMENT\" added!"
$ECHO ""
read -p "Please enter FTP-Path (example: /usr/sap/interfaces/abc/cdf): " FTPPATH
$ECHO "FTP-Path \"$FTPPATH\" added!"
$ECHO ""
read -p "Please enter Groupname (default-group: sapsys): " GROUPNAME
GROUPNAME=${GROUPNAME:-sapsys}
$ECHO "Groupname \"$GROUPNAME\" added!"
$ECHO ""
read -p "Please enter Emailadress: " MAILADDR
$ECHO "Emailadress \"$MAILADDR\" added!"
$ECHO ""
FIRSTNAME=$(echo ${MAILADDR^} | cut -d "." -f1)
}
#Add user to ftp-config
function f_ftpserviceadd ()
{
$ECHO "$FTPUSER" >> /etc/vsftpd.users
}
function f_searchfreeUID ()
{
CHECK="true"
while [ "$CHECK" == "true" ]
do
T2=$($CAT /etc/passwd | /usr/bin/cut -d ":" -f3 | $GREP $FTPUID)
if [ -z ${T2} ] ;
then
#$ECHO "Freie UID \"${FTPUID}\" gefunden"
CHECK="false"
else
FTPUID=`expr $FTPUID - 1`
if [ "$FTPUID" -eq "$FTPUIDMIN" ];
then
$ECHO "Min UID \"${FTPUIDMIN}\" reached! Please contact COM-Support."
CHECK="false"
#else
#$ECHO "Naechste freie UID \"$FTPUID\" gefunden"
fi
fi
done
}
function f_addftpaccount ()
{
ERROR=$($USERADD -d "$FTPPATH" -u "$FTPUID" -g "$GROUPNAME" -s /bin/false -c "$FTPCOMMENT" -m -p $(openssl passwd -1 "$FTPPW") "$FTPUSER" 3>&2 2>&1 1>&3)
T3=$?
if [ "${T3}" -ne "0" ] ;
then
$ECHO "FTP-User "$FTPUSER" not added. Please contact COM-Support!"
else
$ECHO "FTP-User "$FTPUSER" added"
fi
}
function f_logandmail ()
{
if [ "${T3}" -ne "0" ] ;
then
$ECHO "FTP Useradd - ERRORS REPORTED!" | mail -s "FTP Useradd - ERRORS REPORTED!" -S "smtp=x.x.x.x" "${MAILADDR}" -r "${MAILADDR}"
$ECHO "------------------------------------------------------------------------" >> ${LOGERR}
$ECHO "$ERROR" >> ${LOGERR}
$ECHO "Ticketnumber "$TNUMBER" executed as user $USER at `date +%H:%M_%d.%m.%y`" >> ${LOGERR}
$ECHO "FTP-User "$FTPUSER" not added. Please contact Support!" >> ${LOGERR}
$ECHO "------------------------------------------------------------------------" >> ${LOGERR}
else
$CAT <> ${LOGFILE}
$ECHO "Ticketnumber "$TNUMBER" executed as user $USER at `date +%H:%M_%d.%m.%y`" >> ${LOGFILE}
$ECHO "FTP-Username: $FTPUSER" >> ${LOGFILE}
$ECHO "FTP-Pfad: $FTPPATH" >> ${LOGFILE}
$ECHO "------------------------------------------------------------------------" >> ${LOGFILE}
fi
}
f_readftpinfos
f_searchfreeUID
f_addftpaccount
f_ftpserviceadd
f_checkOS
f_logandmail
==== sftpupload.sh ====
Automate sftp-upload through proxy-server!
Usage:
./sftpupload.sh "ftpusername" "/path/to/sourcefiles/" "/path/to/archivedir/"
#!/bin/bash
#set -x
#$1 FTPUSER
#$2 FILEPATH (local source path)
#$3 ARCHIVEDIR
#$4 FTPPATH (path on ftp-server)
if [ -z ${1} ] || [ -z ${2} ] || [ -z ${3} ];
then
echo "Usage: $0 \"FTPUSER\" \"FILEPATH\" \"ARCHIVEDIR\""
exit 1
fi
PROXY="proxy.local:80"
#PROXY="5.6.7.8:80"
#LOGFILE="/var/log/sftpupload.log"
NC=$(which nc)
ARCHIVEDIR=$3
LOGFILE="${ARCHIVEDIR}sftpupload.log"
#ARCHIVEDIR="/some/dir/ARCHIVE/"
FILEPATH=$2
#FILEPATH="/ftptest/test/"
#FTPFILENAME="*.csv"
FTPFILENAME=$(ls $FILEPATH 2> /dev/null |grep .csv)
#FTP-Hostname
HOST="123sftp.com"
#FTP-Username
FTPUSER=$1
echo "FTPUSER=\"$FTPUSER\""
#FTPUSER=${USER}
#Destination path on FTP-Server
FTPPATH="/incoming/"
#FTPPATH=$4
echo $(date +%d.%m.%Y_%H.%M) >> $LOGFILE
#Check if local path exists
if [ -d ${FILEPATH} ]
then
echo "FILEPATH=\"$FILEPATH\""
else
echo "Path \"${FILEPATH}\" doesn´t exist!" | tee -a $LOGFILE
exit 1
fi
#Check if local file exists
if [ -f ${FILEPATH}${FTPFILENAME} ]
then
echo "File \"$FTPFILENAME\" exists - starting to archive"
cp -a ${FILEPATH}${FTPFILENAME} ${ARCHIVEDIR}${FTPFILENAME}.$(date +%H.%M_%d.%m.%Y)
echo "file \"${FTPFILENAME}\" archived!"
else
echo "No file in folder!" | tee -a $LOGFILE
echo "Filename: \"$FTPFILENAME\""
exit 1
fi
#sftp -v -oProxyCommand='/bin/nc -v -X connect -x 1.2.3.4:3128 %h %p' ${FTPUSER}@${HOST} << EOFFTP
#sftp -b - ${FTPUSER}@${HOST} << EOFFTP
#Connect to FTP via SecureFTP (SSH needed) and upload files from FILEPATH to FTPPATH
sftp -o ProxyCommand="'${NC}' -X connect -x '${PROXY}' %h %p" ${FTPUSER}@${HOST} << EOFFTP
put ${FILEPATH}${FTPFILENAME} ${FTPPATH}
quit
EOFFTP
T1=$?
if [ "${T1}" -ne "0" ]
then
echo "Upload failed! Filename: \"${FTPFILENAME}\"" | tee -a $LOGFILE
exit 1
else
echo "File \"${FTPFILENAME}\" has been uploaded to ftp-server!" | tee -a $LOGFILE
echo $LOGFILE
rm ${FILEPATH}${FTPFILENAME}
echo "File \"${FTPFILENAME}\" has been deleted from source!"
exit 0
fi
Additional key-file:
sftp -oIdentityFile=/home/user/.ssh/id_rsa_2019 ...
SFTP-Server:
https://wiki.kairaven.de/open/os/linux/sftpssh
==== pgp-encrypt.sh ====
#!/bin/bash
PGPFILEPATH="/home/scripts"
PASSPHRASEFILE="/home/scripts/passphrase"
ARCHIVEDIR="/home/scripts/archive"
#Check if local path exists
if [ -d ${PGPFILEPATH} ]
then
echo "PGPFILEPATH=\"$PGPFILEPATH\""
else
echo "Path \"${PGPFILEPATH}\" doesn´t exist!" | tee -a $LOGFILE
exit 1
fi
#Check if local path exists
if [ -d ${ARCHIVEDIR} ]
then
echo "ARCHIVEDIR=\"$ARCHIVEDIR\""
else
echo "Path \"${ARCHIVEDIR}\" doesn´t exist!" | tee -a $LOGFILE
exit 1
fi
cd $PGPFILEPATH
array=(*.pgp)
arraylength=${#array[@]}
echo $arraylength
for filename in "${array[@]}"
do
echo "Filename=$filename"
gpg --batch --passphrase-file=$PASSPHRASEFILE $filename
done
mv *.pgp $ARCHIVEDIR
==== logging ====
#!/bin/sh
LOGFILE="/var/log/logfile.log"
LOGERR="/var/log/error.log"
{
# IO redirection for logging.
touch ${LOGFILE}
exec 6>&1 # Link file descriptor #6 with stdout.
# Saves stdout.
exec > ${LOGFILE} # stdout replaced with file ${LOGFILE}.
touch ${LOGERR}
exec 7>&2 # Link file descriptor #7 with stderr.
# Saves stderr.
exec 2> ${LOGERR} # stderr replaced with file ${LOGERR}.
}
=== Oneliners ===
Delete all *.log & *.gz files in folder "/var/log/tomcat6" older than 14 Days:
find /var/log/tomcat6/* -name "*.gz" -mtime +14 -exec rm -f {} \; && find /var/log/tomcat6/* -name "*.log" -mtime +14 -exec rm -f {} \;
Copy all files from a list (restore_clients_test.txt) from folder "/data" to "/mnt/target/":
for (( i = 1; i <=3; i++ )); do file=`sed -n "$i"p restore_clients_test.txt`; echo $file; cp -r data/$file /mnt/target/.; done
=== Check Mountpoint ===
#!/bin/sh
while true; do
echo `date` >> /data/testfile
ls -al /data/testfile
sleep 10;
done &