Server::Utility Scripts
UTILITY SCRIPTS
Vooral voor het maken van backups en voor aanvullende opties voor de fotobeheer- en presentatieprogrammas Piwigo en de Wordpress Blog heb ik diverse bash scripts samengesteld die uitgevoerd worden vanaf de shell prompt.
Zie voor linux scripting bijvoorbeeld http://www.freeos.com/guides/lsst/ of zoek met Google: linux scripting
De individuele scripts kunnen rechtstreeks aangeroepen worden of via het script 'utils', dat in feite alleen maar een keuze-menu van de diverse scripts presenteert. Naar verwachting zullen in de toekomst nog meer utility scripts toegevoegd worden.
Utilities pakket
Het complete pakket is samengevoegd in utils-bestanden.tar.gz en bevatte op 26/12/2024 de volgende bestanden:
![]() |
![]() |
![]() |
![]() |
![]() |
||
1 | utils | : | Utilities hoofdmenu inclusief checks benodigde scripts | |||
| | ||||||
2 | |== | backup | : | Submenu voor backups van OS, Piwigo, Wordpress en restore instructies. | ||
3 | | | |== | sysback | : | Maken van een backup van het ClearOS Operating System. Script wordt ook gebruikt middels cron. | |
| | | | |||||
4 | | | |== | backuppwg | : | Submenu en script voor backup/synchronisatie van de Piwigo foto-galerij. | |
5 | | | | | |-- | backuppwg-cron | : | script voor backup van de Piwigo foto-galerij via cron-opdracht. |
6 | | | | | |-- | backuppwg_readme | : | menuoptie voor weergave van gebruikersinstructies incl. instellen van met cron. |
7 | | | | | |-- | piwigo-hacks | : | menuoptie voor maken van tarballs van alle 'gehackte' PIWIGO bestanden en de originelen. |
8 | | | | | |-- | piwigo-hacks_readme | : | menuoptie voor weergave van gebruikersinstructies voor piwigo-hacks. |
9 | | | | | |-- | pwg-snapshot | : | menuoptie voor het maken van een snapshot van de laatste backup |
10 | | | | | |-- | reset-websitepermission-users | : | menuoptie voor het resetten van gebruikers en permissies van /var/www |
| | | | |||||
11 | | | |== | backupwp | : | Submenu en script voor backup/synchronisatie van de wordpress blog. | |
12 | | | | | |-- | backupwp-cron | : | script voor backup van de wordpress blog via cron-opdracht. |
13 | | | | | |-- | backupwp_readme | : | menuoptie voor weergave van gebruikersinstructies incl. instellen van cron. |
14 | | | | | |-- | wordpress-hacks | : | menuoptie voor maken van tarballs van alle 'gehackte' Wordpress bestanden en de originelen. |
15 | | | | | |-- | wordpress-hacks_readme | : | menuoptie voor weergave van gebruikersinstructies voor wordpress-hacks. |
| | | | |||||
16 | | | |== | sysback_restore_readme | : | menuoptie met instructies voor OS-restore m.b.v. gemaakte 'sysback' backups. | |
| | ||||||
17 | |== | scanopties | : | Submenu en script voor de Clamav filescanner inclusief manuele scanstart | ||
18 | | | |== | scanfiles | : | menuoptie voor ClamAv filescan programma 'clamscan', wordt ook uitgevoerd door cron.daily | |
19 | | | |== | scanquar | : | menuoptie voor het behandelen van in quarantaine geplaatste bestanden | |
| | ||||||
20 | |== | pwg-desc | : | Submenu en script voor import uit Excel van fotobeschrijvingen in Piwigo-database. | ||
21 | | | |== | pwg-desc_readme | : | menuoptie voor weergave van gebruikersinstructies van het fotobeschrijvingen-importprocess. | |
| | ||||||
22 | |== | utils-extra | : | Submenu met diverse hulp-scripts | ||
23 | |== | mysql-pwg | : | menuoptie voor MariaDB login Piwigo-database. Gebruikt .mysql_access bestand | ||
24 | |== | myswl-wp | : | menuoptie voor MariaDB login Wordpress-database. Gebruikt .mysql_access bestand | ||
25 | |== | demo.mysql_access | : | menuoptie met voorbeeld .mysql_access bestand met MySQL wachtwoorden voor scripts met SQL. | ||
26 | |== | sql-samples.txt | : | menuoptie met overzicht handige MariaDB commando's | ||
27 | |== | rsync_thisserver_with_mainserver | : | menuoptie voor het selecteren en importeren van data van de mainserver 192.168.178.4. Gebruikt .rsync_access_to_mainserver | ||
28 | |== | rsync_thisserver_with_testserver | : | menuoptie voor het selecteren en importeren van data van de testserver 192.168.178.5. Gebruikt .rsync_access_to_testserver | ||
29 | |== | server-ipupdate | : | menuoptie voor IP-update na verhuizing van server naar router met andere ip-range. Gebruikt /usr/local/server-net-ips referentiebestand met huidige ip's | ||
30 | |== | utils_install_readme | : | menuoptie met Installatie informatie van Utilitiescripts | ||
: | ||||||
31 | aan & uit | : | script schakelt USB-gestuurde powerswitch id-67507 aan/uit. default=uit | |||
32 | aan-560309 & uit-560309 | : | script schakelt USB-gestuurde powerswitch id-560309 aan/uit. default=aan | |||
33 | archiveer-host | : | BackupPC script voor het met crons archiveren van backups. | |||
34 | html-owner | : | Cron script voor het checken en corrigeren van ownership van map /var/www/html | |||
35 | logisp | : | script dat middels een cron beschibaarheid van het internet logt. | |||
36 | netwatch | : | script voor detectie van langdurig verlies internet verbinding. Probeert met script 'net-reboot' het glasvezelmodem en router te re-initieren | |||
37 | net-reboot | : | script wodt aangeroepen door 'netwatch' voor schakelen Cleaware USB-powerswitch | |||
38 | wol | : | cron-script voor wekken 'ben-pc' | |||
39 | wolping | : | script voor het wekken van een netwerk-PC door BackupPC. | |||
40 | wp-htaccess | : | cron script voor vervanging .htaccess bestand en integratie in wordpress.conf. Inclusief mailteksten: wp-htaccess-hack.txt, wp-htaccessupdated-mail.txt en wp-updated-mail.txt | |||
41 | flex-detect | : | Benodigd voor ClearOS apache configuratie met flex-systeem. Inclusief mailtekst: flex-integrate-error.txt | |||
40 | flex-integrate | : | Zie 'flex-detect'. Inclusief mailtekst: flex-mail.txt |
Installatie
- Download hier het pakket 'utils-bestanden.tar.gz'
- Plaats het bestand in '/usr/local/bin' en pak het uit:
# cd /usr/local/bin/
# tar -xzvf utils-bestanden.tar.gz
.mysql_access bestand
Enkele 'utils' scripts bevatten MySQL queries waarbij wachtwoorden nodig zijn.
Deze wachtwoorden zijn niet 'hardcoded' in de scripts geplaatst maar worden middels een 'include' statement binnengehaald uit het bestand '.mysql_access', een verborgen bestand dat in dezelfde directory '/usr/local/bin' geplaatst wordt.
Bij de hierboven uitgepakte bestanden bevindt zich het template bestand 'demo.mysql_access'.
Open dit bestand in een editor en vervang <MySQL-rootwachtwoord> en<MySQL-gebruikerwachtwoord> met de wachtwoorden die ingevoerd zijn bij de Piwigo en Wordpress installatie.
Zie ook de Piwigo site Piwigo::Backup en de Wordpress site WORDPRESS::Backup and Restore
MYSQL_PWD_R="<MySQL-rootwachtwoord>"
MYSQL_PASSWORD="<MySQL-gebruikerwachtwoord>"
Sla het berwerkte bestand op als '/usr/local/bin/. mysql_access' en wijzig permissies:
# chown root:root .mysql_access
# chmod 400 .mysqlaccess
Utilities Menu
Open 'Utilities' menu: # utils
Met het commando # utils wordt het Utilities menu getoond met daarin de beschikbare keuzes.
Voordat het menu getoond wordt controleert het script of alle benodigde bestanden in '/usr/local/bin' wel aanwezig zijn. Als één of meer bestanden missen stopt het script met vermelding van de missende bestanden. Alleen als alle bestanden gevonden worden gaat het script verder met het openen van het menu.
Klik hier om het 'utils' script te bekijken.
Optie 1: Backup-, Restore- en Onderhoudsprogramma's
Deze menuoptie kan ook direct vanaf de prompt aangeroepen worden met commando: # backup
Dit script opent met een Backup-menu, zie verderop in deze sectie BACKUP voor verdere details.
Optie 2: Clamav Filescanner
Deze menuoptie kan ook direct vanaf de prompt aangeroepen worden met commando: # scanopties
Dit script opent met een Filescan-menu, zie verderop in deze sectie Clamav Filescanner
Optie 3: Piwigo Foto bijschriften
Deze menuoptie kan ook vanaf de prompt aangeroepen worden met commando: # pwg-desc
Zie voor het complete verhaal de site Piwigo::Foto's Omschrijven
Optie 4: Extra Utilitiescripts
Deze menuoptie opent een submenu dat ook aan de prompt aangeroepen kan worden met: # utils-extra
Dit script opent met een menu met diverse scripts, zie verderop in deze sectie Server::Utilitiescripts > Overige scripts
BACKUP script
Optie 1 van het 'utils' script start het script 'backup'
Met het commando # backup wordt het 'Backup' menu getoond met daarin de beschikbare keuzes.
Ook hier wordt, voordat het menu getoond wordt, gecontroleerd of alle benodigde bestanden in '/usr/local/bin' wel aanwezig zijn. Als één of meer bestanden missen stopt het script met vermelding van de missende bestanden. Alleen als alle bestanden gevonden worden gaat het script verder met het openen van het menu.
Klik hier om het 'backup' script te bekijken en/of rechtsklik op pagina en gebruik Save As om bestand op te slaan.
Optie 1: Server OS backup
Met de menu-optie 1 wordt een backup gemaakt van het complete Operating System (OS) middels het script 'SYSBACK'.
Dit script wordt al middels een cron regelmatig uitgevoerd, maar er zijn situaties waarin, voor er verder gegaan wordt, het verstandiger is eerst een backup te maken.
Sysback Script
Eenvoudig programmaatje om het OS-systeem van de server als backup op te slaan. Het 'sysback' script wordt door de cron " 15 0 * * 0 /usr/local/bin/sysback &> /dev/null" * #* elke 1e dag van de week om 00.15 uur uitgevoerd. De tar wordt opgeslagen in /vault/sysback. Aan het eind van het script de restore informatie. Zie ook Server::Backup en Restore > Operating System Backup
Klik hier om het 'sysback' script te bekijken en/of rechtsklik op pagina en gebruik Save As om bestand op te slaan.
In het begin van het script worden verschillende variabelen opgeslagen o.a. het pad waar de backups opgeslagen moeten worden (storedir). In deze sectie kan het script dus eenvoudig aangepast worden aan de serverconfiguratie.
Vervolgens wordt van het OS een tarball gemaakt en dit archief wordt voorzien van een bestandsnaam met daarin opgenomen de timestamp. Elke keer dat een een nieuwe backup gemaakt wordt, wordt deze dus weggeschreven met een nieuwe naam. Daarna wordt gecontroleerd of er een vroegere backup ouder dan 2 weken bestaat en deze wordt verwijderd.
Scriptsectie 'sysback':
# Maak tarball van systeem bestanden tar --exclude=swap.img --exclude=/proc --exclude=/dev --exclude=/tmp --exclude=/mnt --exclude=/sys --exclude=/run --exclude=/media --exclude=/var/cache/apt/archives --exclude=/usr/src/linux-headers* --exclude=/home --exclude=/store --exclude=/vault --exclude=/var/www/html -cvzf $sysbackdir$datestamp"-sysback.tar.gz" /; # delete bestaande tarballs die meer dan twee weken oud zijn find $sysbackdir -maxdepth 1 -mtime +14 -name *sysback.* -exec rm {} \;;
In de eerste regel wordt een tarball gecreëerd (tar -c) op de locatie 'storedir' en dat de naam krijgt beginnend met de 'timestamp' gevolgd door '-system-backup'. Het archief wordt gemaakt van '/' (root), dus in feite de gehele server behalve de uitgefilterde secties gespecificeerd met --exclude.
In de tweede regel wordt op de opslaglocatie gezocht naar '*system-backup' bestanden die ouder zijn dan 14 dagen en deze worden verwijderd door commando '-exec rm'
Optie 2: Piwigo backup/synchronisatie
Optie 2 van het 'backup' menu opent een nieuw script 'backuppwg' met het menu 'Piwigo Backup/Synchronisatie'.
Hier kan gekozen worden voor een backup van alle nieuwe/gewijzigde bestanden of een synchronisatie waarbij bestanden die in de bron niet meer voorkomen ook uit de backup verwijderd worden.
Zie verderop de sectie Piwigo backup/synchronisatie
Het Piwigo backup menu heeft de volgende opties:
- Backup - Kopieer nieuwe/gewijzigde bestanden. Behoud bestanden verwijderd uit bron
- Synchroniseer - Kopieer nieuwe/gewijzigde bestanden. Verwijder indien alleen in doel
- Gebruikersinstructies voor PIWIGO RESTORE en automatisch backup met cron
- Piwigo User-Hacks Backup
- Maak snapshot van huidige backup
- Reset permissies websites in '/var/www/' naar 'www-data:lanshare' dirs '755' files '644'
Optie 3: Wordpress backup/synchronisatie
Optie 3 van het 'backup' menu opent een nieuw script 'backupwp' met het menu 'Wordpress Backup/Synchronisatie'.
Hier kan gekozen worden voor een backup van alle nieuwe/gewijzigde bestanden of een synchronisatie waarbij bestanden die in de bron niet meer voorkomen ook uit de backup verwijderd worden.
Zie verder de sectie Wordpress backup/synchronisatie
Het Wordpress backup menu heeft de volgende opties:
- Backup - Kopieer nieuwe/gewijzigde bestanden. Behoud bestanden verwijderd uit bron
- Synchroniseer - Kopieer nieuwe/gewijzigde bestanden. Verwijder indien alleen in doel
- Gebruikersinstructies voor Wordpress RESTORE en automatisch backup met cron
- Wordpress User-Hacks Backup
Optie 4: Gebruikersinstructies voor Server RESTORE met een SYSBACK backup
Optie 4 opent het tekstbestand 'sysback_restore_readme' met de gebruikersinstructie voor het restoren van het OS met de door het script 'sysback' gemaakte tarball. Zie hiervoor ook bovenstaande sectie Optie 1: Server OS backup
# =========================================================================================== # RESTORE SERVER met (secties uit) tarball samengesteld met script SYSBACK # =========================================================================================== # Sysback v1.4 23 juni 2017 Ben Makkink # ------------------------------------------------------------------------------------------- # 1. Bestanden (tarballs) zijn opgeslagen in /vault/sysback # 2. Tarballs zijn gecreeerd met path vanuit root '/' # 3. !!! Dus extract (restore) uitvoeren vanuit root '/' !!! # # Hier een voorbeeld met een backup met naam: 20151025-sysback.tar.gz # Gebruik volgende commando's: # #cd / (extract tarball vanuit root) # #ls /vault/sysback (haal lijst met bestaande tarballs) # #tar -tzvf /vault/sysback/20151025-sysback.tar.gz (lijst van bestanden in een tarball) # voorbeeld: usr # usr/lib64/security/ # usr/lib64/security/pam_chroot.so # etc. # #tar -tzvf /vault/sysback/20151025-sysback.tar.gz usr/local/bin # toont lijst van bestanden onder usr/local/bin in de tarball # # #tar -xzvf /vault/sysback/20151025-sysback.tar.gz # (restore complete '/' directory en subdirectories) # #tar -xzvf /vault/sysback/20151025-sysback.tar.gz usr # (restore alleen subdir 'usr' en al z'n subdirectories) # #tar -xzvf /vault/sysback/20151025-sysback.tar.gz usr/local/bin/sysback # (restore alleen bestand 'sysback') # # Als bijvoorbeeld met het laatste voorbeeld de fout gemaakt wordt dit commando niet vanuit # / (root) te geven maar vanuit /home dan belandt het uitgepakte bestand op # /home/usr/local/bin/sysback. Dus een hele nieuwe reeks met (sub)dirs op de verkeerde plaats. # # Opties van commando tar: # -c creeer, -t list, -x extract, -z zip/unzip naar/van gz, -v verbose # -f onmiddellijk gevolgt door de tarball naam. # # Restore GRUB # ============= # De tarball 20151025-sysback.tar.gz bevat de rootbestanden en de kernel. Na een # restore met dit bestand zal ClearOS mogelijk niet opstarten en moet het # bootprogramma GRUB hersteld worden met behulp van de installatie USB: # 1. Plaats monitor en keyboard. Boot computer met installatie USB (gaat automatisch als # de boot USB geplaatst is. Selecteer de rescue optie. # 2. a # sudo su e # grub -install /dev/sda1 # b # mkdir /mnt/test f # exit # c # mount -t ext4 -o dev/sda1 /mnt/test g # umount /mnt/test # d # cd /dev/sda1 h # reboot (zonder CD) # # ===========================================================================================
Klik hier om het complete script te bekijken en/of rechtsklik op pagina en gebruik Save As om bestand op te slaan.
Piwigo backup/synchronisatie
Het script 'backuppwg' opent een nieuw script met het menu 'Piwigo Backup/Synchronisatie'.
Het script kan direct aan de prompt opgeroepen worden of via de menu's van utils > backup.
Klik hier om het volledige script 'backuppwg' te bekijken of rechts klikken op de pagina en te downloaden middels Save As.
Bestanden waarvan backups gemaakt worden:
Naast het Piwigo programma in /var/www/html/piwigo bevinden de gebruikersbestanden zich in:
Mariadb | MySQL database 'piwigo' (wordt geschreven naar subdir 'dbase_dump' van $source_data) |
/home/pwgdata/upload | Map waarnaar de gebruikersbestanden (images, video's, etc.) geladen worden middels een webformulier |
/home/pwgdata/galleries | Map waarnaar de gebruikersbestanden (images, video's, etc.) geladen worden middels FTP of lokale filetransfer en synchroniseer methode |
/home/pwgdata/_data | Map waar de derivaten van de images opgeslagen worden (geschaalde foto's) |
/home/pwgdata/local | Map met gebruikersaanpassingen in de configuratie van Piwigo gemaakt met de Local Files Editor |
Tevens maken we backups van bestanden met code waarin we wijzigingen (hacks) in hebben aangebracht.
Backup vs Synchronisatie
Bij een backup worden alle nieuwe en/of gewijzigde bestanden in de bron naar het doel gekopieerd, maar alle bestanden die niet meer in de bron voorkomen worden bewaard en niet uit het doel verwijderd
Bij een synchronisatie worden daarentegen alle bestanden die niet meer in de bron voorkomen wel uit het doel verwijderd.
Dit wordt bewerkstelligd door aan het commando 'rsync' de optie '--delete' toe te voegen.
Voer deze laatste optie alleen uit als je zeker weet dat in de bron niet (per ongeluk) bestanden verwijderd zijn!
Piwigo dagelijkse backup met cron
De backup van Piwigo wordt tevens dagelijks gemaakt middels het script 'backuppwg-cron', klik hier om het script te bekijken of te downloaden (rechts klikken en save as).
Er wordt een backup (zonder delete) uitgevoerd, dus als er per ongeluk Piwigo-data verwijderd zijn dan blijven die in de backup gewoon bewaard.
Zie voor uitleg ook de hiernavolgende sectie Optie1: Backup
Het script wordt dagelijks om 01:01 uur uitgevoerd door navolgende regel toe te voegen met crontab:
1 1 * * * /usr/local/bin/backuppwg-cron &> /dev/null
Bij het uitvoeren van het script wordt ook de datum en tijd van de backup opgeslagen in de naam van een dummybestand.
Optie 1: Backup
Klik hier om het volledige script 'backuppwg' te bekijken of te downloaden middels rechts klikken en Save As.
Relevante scriptsecties voor Backup:
# Set VARIABLES # Geef hier aan waar het 'piwigo' programma zich bevindt source_prog="/var/www/html/piwigo"; # Geef hier aan waar de buiten de webroot geplaatste 'piwigo data' zich bevinden source_data="/home/pwgdata" # Geef hier aan waar synchronisatie/backup bestanden opgeslagen moeten worden storedir="/vault/piwigo/"; # Geef hier aan welk datumformaat gebruikt moet worden voor de bestandsnaam datestamp=$(date +%Y%m%d); # Maak de variabele met de datum en tijd van de vorige 'piwigo' backup/synchronisatie syncfile=$source_data"/synchronisatie*"; lastsync=$(date -r $syncfile +%d/%m/%Y-%X); echo "Bezig met Export MySQL database 'piwigo'..."; mysqldump -uroot -p$MYSQL_PWD_R --opt --databases piwigo > $source_data/dbase_dump/"piwigo-dump"$datestamp".sql"; # Verwijder synchronisatiedatum bestand uit 'source_data' rm -rf $syncfile; # Verwijder oude synchronisatiedatum bestanden uit 'storedir' find $storedir -maxdepth 2 -mtime +7 -name synchronisatiedatum* -exec rm {} \;; touch $source_data"/synchronisatiedatum-"$datestamp; # Verwijder dbase_dumps in source_data ouder dan 7 dagen find $source_data/dbase_dump/ -maxdepth 1 -mtime +7 -name *piwigo-dump* -exec rm {} \; case $keuze in 1) echo "Bezig met Backup van PIWIGO programma (zonder delete)..."; rsync -avzh $source_prog $storedir; echo; echo "Backup van PIWIGO data (zonder delete)..."; rsync -avzh $source_data $storedir; echo "Verwijder databasedumps die niet meer in bron voorkomen..."; rsync -avzh --delete $source_data/dbase_dump $storedir"pwgdata"; echo; echo -n " Backup afgerond, drukom terug te gaan naar menu."; read foo; backuppwg;;
Optie 2: Synchroniseer
Klik hier om het volledige script 'backuppwg' te bekijken of te downloaden middels rechtsklikken en Save As.
Relevante scriptsectie voor Synchroniseer (zie voor de variabelen bovenstaande scriptsectie):
2) echo "Bezig met Synchronisatie van PIWIGO programma (met delete)..."; rsync -av $source_prog --delete $storedir; echo; echo "Bezig met Synchronisatie van PIWIGO data (met delete)..."; rsync -av $source_data --delete $storedir; echo; echo -n " Synchronisatie afgerond, drukom terug te gaan naar menu."; read foo; backuppwg;;
Optie 3: Gebruikersinstructies
Deze optie opent het tekstbestand 'backuppwg_readme' met uitleg over het Piwigo backup/synchronisatie proces en de restore procedures.
Naast de uitleg in 'backuppwg_readme' wordt het Piwigo backup/synchronisatie proces verder in detail beschreven in de site Piwigo::Backup en er zal hier niet verder op ingegaan worden.
Optie 4: Piwigo User-Hacks Backup
Deze optie opent het script 'piwigo-hacks' dat opnieuw een menu weergeeft. Klik hier om het script weer te geven en eventueel op te slaan middels Save As
Script voor het samenstellen van een tarball van alle bestanden in PIWIGO die gewijzigd zijn door de gebruiker (voor en na de eigen wijzigingen). De tarballs piwigo-hacks.tar.gz en piwigo-hacks-org.tar.gz worden opgeslagen in /home/pwgdata/hacks/.
Klik hier om optie 1: de gebruikersinstructies te bekijken en mogelijk op te slaan middels Save As.
In deze instructies wordt uitgelegd wat te doen vóórdat een Piwigo Update uitgevoerd wordt om te zorgen dat eigengemaakte hacks in programmacode bewaard blijven.
De voor opties 2 en 3 Maak piwigo-hacks tarbal zijn de relevante scriptsecties:
echo -n " Tarball van de eigen gemodificeerde PIWIGO-bestanden maken? Y/N: "; read yn; case $yn in [Yy]) echo " De volgende bestanden worden gearchiveerd."; echo " ================================================================================"; cd /var/www/html/piwigo; #Ga naar de /piwigo directory tar -cvf tmp.tar index.php; #bestanden met eigen bewerkingen naar archief tmp.tar tar -rvf tmp.tar include/extra-index.inc.php; tar -rvf tmp.tar include/category_default.inc.php; tar -rvf tmp.tar themes/Pure_clear_blue/icon/sprite.png; tar -rvf tmp.tar plugins/Fotorama/fotorama/fotorama@2x.png; tar -rvf tmp.tar admin/site_update.php; tar -rvf tmp.tar plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl; tar -rvf tmp.tar include/user.inc.php; tar -rvf tmp.tar plugins/BatchDownloader/template/images/zip.png; tar -rvf tmp.tar plugins/rv_menutree/template/rv_menutree_categories.tpl; tar -rvf tmp.tar plugins/Fotorama/template/fotorama-content.tpl; tar -rvf tmp.tar themes/smartpocket/themeconf.inc.php; tar -rvf tmp.tar plugins/piwigo-videojs/template/vjs-5-player.tpl; tar -rvf tmp.tar plugins/piwigo-videojs/video-js-5/videojs-local.css; tar -rvf tmp.tar plugins/piwigo-videojs/video-js-5/videojs-local-mobile.css; tar -rvf tmp.tar plugins/ShareAlbum/main.inc.php; tar -rvf tmp.tar plugins/ShareAlbum/include/public_events.inc.php; tar -rvf tmp.tar plugins/ShareAlbum/admin/template/config.tpl; tar -rvf tmp.tar plugins/ShareAlbum/admin/config.php; gzip tmp.tar; # Comprimeer het bestand met gzip # Geef een fatsoenlijke naam en locatie aan het bestand mv tmp.tar.gz /home/pwgdata/hacks/piwigo-hacks.tar.gz; echo " ================================================================================"; echo " PIWIGO bestanden met eigen aanpassingen zijn gearchiveerd in /home/pwgdata/hacks"; echo -n " Drukom terug te gaan naar menu."; read foo; piwigo-hacks ;; *) echo echo -n " Optie gecanceld, druk om terug te gaan naar menu."; read foo; piwigo-hacks ;; esac;; 3) yn="n" echo; echo -n " Tarball van pre-upgrade *.org PIWIGO-bestanden maken? Y/N: "; read yn; case $yn in [Yy]) echo " De volgende bestanden worden gearchiveerd."; echo " ================================================================================"; cd /var/www/html/piwigo; #Ga naar de /piwigo directory tar -cvf tmp.tar index.php.org; tar -rvf tmp.tar include/extra-index.inc.php.org tar -rvf tmp.tar include/category_default.inc.php.org; tar -rvf tmp.tar themes/Pure_clear_blue/icon/sprite.png.org; tar -rvf tmp.tar plugins/Fotorama/fotorama/fotorama@2x.png.org; tar -rvf tmp.tar admin/site_update.php.org; tar -rvf tmp.tar plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl.org; tar -rvf tmp.tar include/user.inc.php.org; tar -rvf tmp.tar plugins/BatchDownloader/template/images/zip.png.org; tar -rvf tmp.tar plugins/rv_menutree/template/rv_menutree_categories.tpl.org; tar -rvf tmp.tar plugins/Fotorama/template/fotorama-content.tpl.org; tar -rvf tmp.tar themes/smartpocket/themeconf.inc.php.org; tar -rvf tmp.tar plugins/piwigo-videojs/template/vjs-5-player.tpl.org; tar -rvf tmp.tar plugins/piwigo-videojs/video-js-5/videojs-local.css.bck; tar -rvf tmp.tar plugins/piwigo-videojs/video-js-5/videojs-local-mobile.css.bck; tar -rvf tmp.tar plugins/ShareAlbum/main.inc.php.org; tar -rvf tmp.tar plugins/ShareAlbum/include/public_events.inc.php.org; tar -rvf tmp.tar plugins/ShareAlbum/admin/template/config.tpl.org; tar -rvf tmp.tar plugins/ShareAlbum/admin/config.php.org; gzip tmp.tar; # Comprimeer het bestand met gzip # Geef een fatsoenlijke naam en locatie aan het bestand mv tmp.tar.gz /home/pwgdata/hacks/piwigo-hacks-org.tar.gz; echo " ================================================================================"; echo " Originele bestanden voor de hacks zijn gearchiveerd in /home/pwgdata/hacks";
Voor optie 4: Hack-bestanden vergelijken zijn de relevante scriptsecties:
Bij een Piwigo upgrade worden eigen hacks mogelijk overschreven. Na het maken van een hack wordt een kopie bewaard met de extentie .bck"
Dit *.bck bestand heeft dezelfde timestamp als het bestand met de hack.
Als na een upgrade de timestamps verschillen betekent dit dat het bestand met de hack overschreven is door de upgrade.
De hack moet in dat geval opnieuw aangebracht worden.
echo -n " Hack-bestanden nu vergelijken? Y/N: "; read yn; case $yn in [Yy]) echo; cd /var/www/html/; echo "ls -l piwigo/index*"; ls -l piwigo/index*; echo -n " Drukom verder te gaan: "; read foo; echo; echo "ls -l piwigo/include/extra-index*"; ls -l piwigo/include/extra-index*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/admin/site_update.php*"; ls -l piwigo/admin/site_update.php*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/include/user.inc.php*"; ls -l piwigo/include/user.inc.php*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/include/functions_user.inc.php*"; ls -l piwigo/include/functions_user.inc.php*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/include/category_default.inc.php*"; ls -l piwigo/include/category_default.inc.php*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/Fotorama/fotorama/fotorama@2x.png*"; ls -l piwigo/plugins/Fotorama/fotorama/fotorama@2x.png*; echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl*"; ls -l piwigo/plugins/PWG_Stuffs/theme/template/stuffs_logon.tpl*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/BatchDownloader/template/images/zip.png*"; ls -l piwigo/plugins/BatchDownloader/template/images/zip.png*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/piwigo-videojs/template/vjs-5-player.tpl*"; ls -l piwigo/plugins/piwigo-videojs/template/vjs-5-player.tpl*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/piwigo-videojs/video-js-5/videojs-local.css*"; ls -l piwigo/plugins/piwigo-videojs/video-js-5/videojs-local.css*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/piwigo-videojs/video-js-5/videojs-local-mobile.css*"; ls -l piwigo/plugins/piwigo-videojs/video-js-5/videojs-local-mobile.css*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/piwigo-videojs/admin/admin_sync.php*"; ls -l piwigo/plugins/piwigo-videojs/admin/admin_sync.php*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/piwigo-videojs/admin/admin_batchmanager.php*"; ls -l piwigo/plugins/piwigo-videojs/admin/admin_batchmanager.php*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/ShareAlbum/main.inc.php*"; ls -l piwigo/plugins/ShareAlbum/main.inc.php*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/ShareAlbum/include/sharealbum_functions.inc.php*"; ls -l piwigo/plugins/ShareAlbum/include/sharealbum_functions.inc.php*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/ShareAlbum/admin/template/config.tpl*"; ls -l piwigo/plugins/ShareAlbum/admin/template/config.tpl*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/ShareAlbum/admin/config.php*"; ls -l piwigo/plugins/ShareAlbum/admin/config.php*; echo -n " Druk om verder te gaan: "; read foo; echo; echo "ls -l piwigo/plugins/rv_menutree/template/rv_menutree_categories.tpl*"; ls -l piwigo/plugins/rv_menutree/template/rv_menutree_categories.tpl*; # echo -n " Druk om verder te gaan: "; read foo; echo; echo " ================================================================================"; echo " Einde check PIWIGO hack-bestanden";
Voor optie 5:Templatebestanden vergelijken zijn de relevante scriptsecties:
Van enkele templates zijn templates afgeleid met eigen configuraties. De templates hoeven dus niet 'gehackt' te worden maar worden vervangen door de aangepaste templates."; echo "
Bij een Piwigo upgrade worden templates mogelijk gewijzigd/overschreven. De eigen lokale template blijft weliswaar bewaard, maar mist mogelijk aanpassingen/toevoegingen in de nieuwe Piwigo template."; echo "
Om dit te monitoren maken we van de originel template die gebruikt is bij het maken van de eigen lokale template een backup bestand met extensie .bck.
Als na een upgrade de timestamps tussen het origineel en de backup verschillen is het zaak de eigen template opnieuw aan te maken maar nu op basis van de laatste Piwigo template.";
echo -n " Template-bestanden nu vergelijken? Y/N: "; read yn; case $yn in [Yy]) echo; echo cd /var/www/html/piwigo/themes/default/template/; echo "ls -l *header.tpl*"; ls -l *header.tpl*; ls -l /home/pwgdata/template-extension/*header.tpl* echo -n " Druk eenom verder te gaan: "; read foo; echo; echo "ls -l *identification.tpl*"; ls -l identification.tpl*; ls -l /home/pwgdata/template-extension/*t_identification.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *index.tpl*"; ls -l *index.tpl*; ls -l /home/pwgdata/template-extension/*index.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *mainpage_categories.tpl*"; ls -l *mainpage_categories.tpl*; ls -l /home/pwgdata/template-extension/*mainpage_categories.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *menubar_identification.tpl*"; ls -l *menubar_identification.tpl*; ls -l /home/pwgdata/template-extension/*menubar_identification.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *picture.tpl*"; ls -l *picture.tpl*; ls -l /home/pwgdata/template-extension/*picture.tpl* echo -n " Druk een om verder te gaan: "; read foo; echo; echo "ls -l *thumbnails.tpl*"; ls -l *thumbnails.tpl*; ls -l /home/pwgdata/template-extension/*thumbnails.tpl* echo -n " Druk een om verder te gaan: "; read foo;
Optie 5: Maak snapshot van huidige backup
Bij elke dagelijkse 'Backup' of 'Synchronisatie' van Piwigo worden de laatste bestanden opgeslagen.
Als er bij het experimenteren fouten ontstaan dan worden die ook in de backup meegenomen. De laatst goedwerkende versie wordt hiermee overschreven.
Daarom is het raadzaam eerst een snapshot van de backup te maken voordat we aan het sleutelen gaan. Deze snapshot wordt opgeslagen in een nieuwe map in "$storedir" met vermelding van de timestamp.
Let op: Er wordt geen kopie gemaakt van de map _data met o.a. galleries!
Klik hier om het volledige script 'pwg-snapshot' te bekijken of te downloaden middels rechts klikken en Save As.
# Geef hier aan welk datumformaat gebruikt moet worden voor de bestandsnaam van de backup datestamp=$(date +%Y%m%d) # Maak variabele met pad waar de snapshot opgeslagen moet worden
snapshotdir=$storedir"snapshot-van-backup-"$datestamp"/"; # Maak snapshot # ============= mkdir $snapshotdir; cp -a $source_prog $snapshotdir; mkdir $snapshotdir"pwgdata/"; cp -a $source_data"/dbase_dump" $snapshotdir"pwgdata"; cp -a $source_data"/hacks" $snapshotdir"pwgdata"; cp -a $source_data"/local" $snapshotdir"pwgdata"; cp -a $source_data"/template-extension" $snapshotdir"pwgdata"; cp -a $source_data"/upload" $snapshotdir"pwgdata";
Optie 6: Reset permissies websites in '/var/www/' naar 'www-data:lanshare' dirs '755' files '64
Klik hier om het volledige script 'reset-website-permissions-users' te bekijken of te downloaden middels rechtsklikken en Save As.
chown -R www-data:lanshare /var/www/; chmod -R 755 /var/www/; find /var/www/html -type f -name '*' -exec chmod 644 '{}' \;
Wordpress backup/synchronisatie
Het script 'backupwp' opent een nieuw menu 'Wordpress Backup/Synchronisatie'.
Het script kan direct aan de prompt opgeroepen worden of via de menu's van utils > backup.
Klik hier om het volledige script 'backupwp' te bekijken of te downloaden middels rechtsklik en Save As.
Bestanden waarvan backups gemaakt worden:
Naast het Wordpress programma in /var/www/html/blog bevinden de gebruikersbestanden zich in:
Mariadb | MySQL database 'wordpress' (wordt met dit script geschreven naar subdir 'dbase_dump' van /home/wpdata) |
/home/wpdata/ | Map waarnaar de gebruikersbestanden (images, video's, etc.) geladen worden |
Tevens maken we backups van bestanden met code waarin we wijzigingen (hacks) in hebben aangebracht.
Backup vs Synchronisatie
Bij een backup worden alle nieuwe en/of gewijzigde bestanden in de bron naar het doel gekopieerd, maar alle bestanden die niet meer in de bron voorkomen worden bewaard en niet uit het doel verwijderd
Bij een synchronisatie worden daarentegen alle bestanden die niet meer in de bron voorkomen wel uit het doel verwijderd.
Dit wordt bewerkstelligd door aan het commando 'rsync' de optie '--delete' toe te voegen.
Voer deze laatste optie alleen uit als je zeker weet dat in de bron niet (per ongeluk) bestanden verwijderd zijn!
Wordpress blog dagelijkse backup met cron
De backup van Wordpress blog wordt tevens dagelijks gemaakt middels het script 'backupwp-cron', klik hier om het script te bekijken of te downloaden (save as).
Er wordt een backup (zonder delete) uitgevoerd, dus als er per ongeluk Wordpress blog-data verwijderd zijn dan blijven die in de backup gewoon bewaard.
Zie voor uitleg ook de hiernavolgende sectie Optie1: Backup
Het script wordt dagelijks om 01:01 uur uitgevoerd door navolgende regel toe te voegen met crontab:
1 1 * * * /usr/local/bin/backupwp-cron &> /dev/null
Bij het uitvoeren van het script wordt ook de datum en tijd van de backup opgeslagen in de naam van een dummybestand.
Optie 1: Backup
Klik hier om het volledige script 'backupwp' te bekijken of te downloaden middels rechtsklik en Save As.
Relevante scriptsecties voor Backup:
# Set VARIABLES # Geef hier aan waar het 'wordpress' programma zich bevindt source_prog="/var/www/html/blog"; # Geef hier aan waar de buiten de webroot geplaatste 'wordpress data' zich bevinden source_data="/home/wpdata" # Geef hier aan waar wordpress-backups opgeslagen moeten worden storedir="/vault/wordpress/"; # Geef hier aan welk datumformaat gebruikt moet worden voor de betandsnaam van de backup datestamp=$(date +%Y%m%d); # Maak de variabele met de datum en tijd van de vorige wordpress backup/synchronisatie syncfile=$source_data"/synchronisatie*"; lastsync=$(date -r $syncfile +%d/%m/%Y-%X); echo "Bezig met Export MySQL database 'wordpress'..."; mysqldump -uroot -p$MYSQL_PWD_R --opt --databases wordpress > $source_data/dbase_dump/"wp-dump"$datestamp".sql"; echo; rm -rf $syncfile; # Verwijder oude synchronisatiedatum bestanden uit 'storedir' find $storedir -maxdepth 2 -mtime +7 -name synchronisatiedatum* -exec rm {} \;; touch $source_data"/synchronisatiedatum-"$datestamp; # Verwijder dbase_dumps in source_data ouder dan 7 dagen find $source_data/dbase_dump/ -maxdepth 1 -mtime +7 -name *wp-dump* -exec rm {} \; case $keuze in 1) echo "Bezig met Backup van Wordpress (zonder delete)..."; rsync -av $source_prog $storedir; echo; echo "Bezig met Backup van WPDATA (zonder delete)..."; rsync -av $source_data $storedir; echo "Verwijder databasedumps die niet meer in bron voorkomen..."; rsync -avzh --delete $source_data/dbase_dump $storedir"wpdata"; echo; echo -n " Backup afgerond, drukom terug te gaan naar menu."; read foo; backupwp;;
Optie 2: Synchroniseer
Klik hier om het volledige script 'backupwp' te bekijken of te downloaden middels Save As.
Relevante scriptsectie voor Synchroniseer (zie voor de variabelen bovenstaande scriptsectie):
2) echo "Bezig met Synchronisatie van Wordpress (met delete)..."; rsync -av $source_prog --delete $storedir; echo echo "Bezig met Synchronisatie van WPDATA (met delete)..."; rsync -av $source_data --delete $storedir; echo; echo -n " Synchronisatie afgerond, drukom terug te gaan naar menu."; read foo; backupwp;;
Optie 3: Gebruikersinstructies
Deze optie opent het tekstbestand 'backupwp_readme' met uitleg over het Wordpress-blog backup/synchronisatie proces en de restore procedures.
Naast de uitleg in 'backupwp_readme' wordt het Wordpress backup/synchronisatie proces verder in detail beschreven in de site Wordpress::Backup en er zal hier niet verder op ingegaan worden.
Optie 4: Wordpress Hacks Backup
Deze optie opent het script 'wordpress-hacks' dat opnieuw een menu weergeeft. Klik hier om het script weer te geven en eventueel op te slaan middels Save As
Klik hier om optie 1: de gebruikersinstructies te bekijken en mogelijk op te slaan middels Save As.
In deze instructies wordt uitgelegd wat te doen vóórdat een Wordppress Update uitgevoerd wordt om te zorgen dat eigengemaakte hacks in programmacode bewaard blijven.
Voor optie 2 is de relevante scriptsectie:
echo -n " Tarball van de eigen gemodificeerde WORDPRESS-bestanden maken? Y/N: ";
read yn;
case $yn in
[Yy])
echo " De volgende bestanden worden gearchiveerd.";
echo " ================================================================================";
cd /var/www/html/blog; #Ga naar de ../blog directory
tar -cvf tmp.tar wp-config.php; #bestanden met eigen bewerkingen naar archief tmp.tar
tar -rvf tmp.tar wp-content/themes/layout-builder/functions.php;
tar -rvf tmp.tar wp-content/themes/layout-builder/content-page.php;
tar -rvf tmp.tar wp-admin/includes/media.php;
tar -rvf tmp.tar wp-includes/link-template.php;
gzip tmp.tar; # Comprimeer het bestand met gzip
# Geef een fatsoenlijke naam en locatie aan het bestand
mv tmp.tar.gz /home/wpdata/hacks/wordpress-hacks.tar.gz;
echo " ================================================================================";
echo " WORDPRESS bestanden met eigen aanpassingen zijn gearchiveerd in /home/wpdata/hacks";
Voor optie 3 is de relevante scriptsectie:
echo -n " Tarball van pre-upgrade *.org WORDPRESS-bestanden maken? Y/N: ";
read yn;
case $yn in
[Yy])
echo " De volgende bestanden worden gearchiveerd.";
echo " ================================================================================";
cd /var/www/html/blog; #Ga naar de ../blog directory
tar -cvf tmp.tar wp-config.php.org;
tar -rvf tmp.tar wp-content/themes/layout-builder/functions.php.org;
tar -rvf tmp.tar wp-content/themes/layout-builder/content-page.php.org;
tar -rvf tmp.tar wp-admin/includes/media.php.org;
tar -rvf tmp.tar wp-includes/link-template.php.org;
gzip tmp.tar; # Comprimeer het bestand met gzip
# Geef een fatsoenlijke naam en locatie aan het bestand
mv tmp.tar.gz /home/wpdata/hacks/wordpress-hacks-org.tar.gz;
echo " ================================================================================";
echo " Originele bestanden voor de hacks zijn gearchiveerd in /home/wpdata/hacks";
Clamav Filescanner
Het script 'scanopties' opent een nieuw menu 'Clamav Filescanner'.
Het script kan direct aan de prompt opgeroepen worden of via de menu's van utils > Clamav Filescanner.
Klik hier om het volledige script 'scanopties' te bekijken of te downloaden middels rechtsklik en Save As.
Optie 1: Wijzig te scannen directories
Hier wordt de teksteditor geopend op het bestand /var/clamav/scandirs.txt
De te scannen mappen moeten in 1 regel geplaatst worden met een spatie ertussen.
Zodra gereed :wq om te saven.
Opties 2 en 3 worden, inclusief de scripts 'scanfiles' en 'scanquar', uitgebreid behandeld in Server::Configureren > Beveiliging
Extra Utilitiescripts
Het script 'utils-extra' opent een nieuw menu 'Hulp Utilities Homeserver'.
Het script kan direct aan de prompt opgeroepen worden of via de menu's van utils > Clamav Filescanner.
Klik hier om het volledige script 'utils-extra' te bekijken of te downloaden middels rechtsklik en Save As.
Het 'Hulp Utilitiescripts' menu bevat een verzameling van scripts die in de loop der jaren hun nut hadden en ook nog kunnen hebben.
Optie 1: MariaDB login Piwigo database
Met script 'mysql-pwg' wordt ingelogd op de MariaDB Piwigo database voor het uitvoeren van SQL queries.
Zie ook MariaDB handige SQL commando's
Het script gebruikt het bestand .mysql_access.
Klik hier om het script 'mysql-pwg' te bekijken of te downloaden middels rechtsklik en Save As.
Optie 2: MariaDB login Wordpress database
Met script 'mysql-wp' wordt ingelogd op de MariaDB Wordpress database voor het uitvoeren van SQL queries.
Zie ook MariaDB handige SQL commando's
Het script gebruikt het bestand .mysql_access
Klik hier om het script 'mysql-wp' te bekijken of te downloaden middels rechtsklik en Save As.
Optie 3: Template .mysql_access
Het tekstbestand 'demo.mysql_access' is een template voor het aanmaken van bijvoorbeeld het .mysql_access bestand zoals gebruikt voor het inloggen onder optie 1 en 2 gebruikt.
MYSQL_PWD_R="" MYSQL_USER="piwigo" MYSQL_PASSWORD=" " MYSQL="mysql -u$MYSQL_USER -p$MYSQL_PASSWORD -Dpiwigo" MYSQLROOT="mysql -uroot -p$MYSQL_PWD_R -Dpiwigo"
Optie 4: MariaDB handige SQL commando's
Deze menuoptie opent een tekstdocument met een overzicht van Piwigo gerelateerde SQL queries die van pas kunnen komen.
Het kan ook gebruikt worden om typo's te voorkomen door de gewenste regel(s) te kopiëren en aan de shell prompt te plakken.
Vervang hierbij <MySQL-rootwachtwoord> en/of <MySQL-gebruikerwachtwoord> door de wachtwoorden zoals ook ingevoerd in bestand '.mysql_access'
Bestand /usr/local/bin/sql-samples.txt
Voorbeeld:
MYSQL commando's Note: Bash commando's beginnen met 'mysql' of 'mariadb' ================================================================================================== Nuttige commando's MariaDB> show databases; Laat alle MYSQL databases zien MariaDB> select database (); Laat zien welke database actief is MariaDB> use piwigo; Zet piwigo als actieve database MariaDB> show tables; Laat alle tables van actieve db zien MariaDB> describe pi_images; Geeft structuur van table pi_images MariaDB> show columns from pi_images; --als boven-- MariaDB> select now(); Geeft systeemtijd MariaDB> select user(); Geeft huidige gebruiker MariaDB> select now(), user(); Combinatie van bovenstaande ================================================================================================= ************* * WORDPRESS * ************* ================================================================================================= Maak Wordpress database aan --------------------------- # mysqladmin -uroot -p'' CREATE wordpress; of # mariadb-admin -uroot -p' ' CREATE wordpress; Geef user 'wordpress' beheer over Wordpress database ---------------------------------------------------- ..... ...etc.
Klik hier om het bestand 'sql-samples.txt' te bekijken of te downloaden middels rechtsklik en Save As.
Optie 5: Selecteer en importeer data van thuisserver 192.168.178.4
Script 'rsync_thisserver_with_thuisserver' voor het synchroniseren van deze server (doel) met de thuisserver (bron)
Het script heeft een include '/usr/local/bin/.rsync_access_to_thuisserver'
Klik hier om het script 'rsync_thisserver_with_thuisserver' te bekijken of te downloaden middels rechtsklik en Save As.
De volgende bestanden kunnen geselecteerd worden:
- /home/ububen
- share Afbeeldingen
- share Documenten
- share E-books
- share Muziek
- share Video
- share Archief
- webroot /var/www/html
- Wordpress /home/wpdata
- Piwigo /home/pwgdata
Optie 6:
Selecteer en importeer data van homeserver 192.168.178.5
Script 'rsync_thisserver_with_homeserver' voor het synchroniseren van deze server (doel) met de testserver (bron)
Het script heeft een include '/usr/local/bin/.rsync_access_to_homeserver'
Klik hier om het script 'rsync_thisserver_with_homeserver' te bekijken of te downloaden middels rechtsklik en Save As.
De volgende bestanden kunnen geselecteerd worden:
- /home/ububen
- share Afbeeldingen
- share Documenten
- share E-books
- share Muziek
- share Video
- share Archief
- webroot /var/www/html
- Wordpress /home/wpdata
- Piwigo /home/pwgdata
Optie 7:
IP-update na verhuizing naar router met andere ip-range
Zie ook Linux::FAQ en Oplossingen > Server verhuizen naar ander netwerk
Script 'server-ipupdate' wordt gebruikt om de server aan ter sluiten op een nieuwe/andere router met een andere IP-range dan de huidige.
Klik hier om het script 'server-ipupdate' te bekijken of te downloaden middels rechtsklik en Save As.
Het script heeft tevens een referentiebestand /usr/local/server-netips nodig.
# ***************************************************************************************** # * Server-ipupdate Ben Makkink 10 december 2021 * # * Als de server in het thuisnetwerk geconfigureerd is zijn er enkele configuraties * # * waarin sommige IP's van het thuisnetwerk hard-coded ingevoerd zijn * # * Als de server om wat voor reden dan ook aangesloten wordt op een andere router met * # * een andere IP range dan kloppen deze hardcoded configuraties niet meer * # * Dit script vergelijkt de oude IP's in het referentiebestand /usr/local/server-netips * # * met de nieuwe router-IP en als er een verschil is wordt de optie aangeboden in * # * diverse configuraties de nodige wijzigingen aan te brengen. * # * Deze nieuwe IP range wordt vervolgens opnieuw opgeslagen in het referentiebestand * # * /usr/local/server-netips * # *****************************************************************************************
Bestand 'server-netips'
Voordat de update uitgevoer wordt moet ervoor gezorgd worden dat de IP's van de server aangesloten op de oude router opgeslagen zijn in een referentiebestand /usr/local/server-netips met onderstaande inhoud:
# Lokaal bestand gebruikt en onderhouden door het script 'ipupdate'. # Met het script wordt een IP update uitgevoerd als de server opgenomen is # in een netwerk met een ander LAN IP. Op de server zijn op diverse locaties # zoals firewall, httpd en samba configuraties IP adressen hardcoded opgenomen. # Deze IP adressen worden met het script geupdated. # # Huidig LAN IP lanip 192.168.178.0 # # Huidig IP van de PC (ssh client)van waaruit het netwerk en server beheerd wordt. clientip 192.168.178.2 # # Huidig IP van de server hostip 192.168.178.4
Vul in:
-
Voor lanip het IP adres van de gateway IP van de oude router.
- Voor clientip het IP adres van de admin PC
- Voor hostip het IP adres van de server
Optie 8:
Installatie informatie voor Utilitiescripts
Deze menuoptie opent het tekstdocument utils_install_readme met installatieinformatie
***************************************************************** * Instructies voor het installeren van het de utility scripts * * Ben Makkink 27 december 2024 * ***************************************************************** Het pakket utils-bestanden.tar.gz bevat een collectie van utilitiescripts voor het maken van backups, etc Kopieer utils-bestanden.tar.gz naar een mapop de server Voer vervolgens uit als root Ga naar directory /usr/local/bin met commando cd /usr/local/bin Pak tarball utils-bestanden.tar.gz uit met commando: tar -xzvf /utils-bestanden.tar.gz ***************************************************************** Dit resulteert in o.a. volgende bestanden: 1. utils 2. utils-extra 3. utils_install_readme 4. backup 5. sysback 6. sysback_restore_readme 7. backuppwg + backuppwg-cron + backuppwg_readme + piwigo-hacks + piwigo-hacks_readme + pwg-snapshot + reset-websitepermission-users 8. backupwp + backupwp-cron + backupwp_readme + wordpress-hacks + wordpress-hacks_readme + wp-htaccess + wp-updated-mail.txt + wp-htaccess-hack.txt + wp-htaccessupdated-mail.txt 9. scanopties + scanfiles + scanquar 10. pwg-desc + pwg-desc_readme 11. demo.mysql_access 12. sql-samples.txt 13. logisp 14. wol + wolping 15. aan + aan-560309 + uit + uit-560309 16. html-owner + reset-website-permissions-users 17. logisp 18. mysql-pwg + mysql-wp 19. net-reboot + netwatch 20. server-ipupdate Voor uitvoeren van menu script geef commando: utils
Overige Scripts
Hier nog enkele scripts die aan de commandolijn gebruikt worden door de admin en/of prgramma maar niet opgenomen in een menu.
Aan en Uit
De scripts 'Aan' en 'Uit' stuurt de USB Powerswitch die gebruikt wordt om via de prompt op de homeserver de testserver aan, respectievelijk uit te schakelen.
Zie voor deze toepassing ExploringLinux::Projecten > USB Netschakelaar
clewarecontrol -c 1 -d 67507 -as 0 1; echo "Testserver is aan";
clewarecontrol -c 1 -d 67507 -as 0 0; echo "Testserver is uit";
Aan-560309 en Uit-560309
De scripts 'Aan-560309' en 'Uit-560309' worden gebruikt voor de USB Powerswitch die gebruikt wordt door de server voor het re-setten van de internetconnectie.
Zie voor deze toepassing ExploringLinux::Projecten > Netwatch met reboot van modem en router
# schakelaar is omgebouwd, stand '0' is ruststand dwz verbonden
clewarecontrol -c 1 -d 560309 -as 0 0;
echo $(clewarecontrol -c 1 -d 560309 -rs 0);
echo "schakelaar is omgebouwd, stand '0' is ruststand
dwz rode lamp = verbonden";
#schakelaar is omgebouwd, stand '1' verbreekt contact
clewarecontrol -c 1 -d 560309 -as 0 1;
echo $(clewarecontrol -c 1 -d 560309 -rs 0);
echo "schakelaar is omgebouwd, stand '1' dwz groene lamp = uitgeschakeld";
Archiveer-host
Cron-script om met BackkupPC een archief (tarball) te maken van een RSYNC Backup van een Host.
Dit script bevat het commando voor het schedulen met een CRON.
Zie voor nadere uitleg
en het script Server::Backup en Restore sectie archiveHost schedulen met script en cron
#!/bin/bash #*************************************************************************************** #* ARCHIVEER-HOST Ben Makkink 05-03-2016 * #* Script om met BackkupPC een archief (tarball) te maken van een Host RSYNC Backup * #* Dit script bevat het on-line commando voor het schedulen met een CRON * #*************************************************************************************** # In BackupPC is een host 'archivaris' geconfigureerd. Deze host kan een archief # (tarball) aanmaken van de laatste backup van een andere (rsyncd/rsync) host. Van host # 'archivaris' is ArchiveDest gezet naar /vault/backuppc. # Deze map is chown backkuppc:root en chmod 750. # Het starten van een archivering kan in BackkupPC helaas niet gescheduled worden, maar # wel met een commandline in dit script en een cron. # # De commandline syntax is: # # BackupPC_archiveStart archiveHost userName hosts... # # Hierin is archiveHost 'archivaris' en userName de naam van de aanvrager: 'root' # Voor hosts... vullen we de gewenste te archiveren host in. # BackupPC draait niet in een shell, dus het is noodzakelijk dat de volledige 'paths' # gebruikt worden #*************************************************************************************** # arch_host=$1 # Voer het archiverings-commando uit als BackupPC-user 'backuppc' sudo -u backuppc /usr/share/BackupPC/bin/BackupPC_archiveStart archivaris root $arch_host; # Oude tarballs, behalve de laatste worden verwijderd. find /vault/backuppc/ -maxdepth 1 -mtime +7 -name $arch_host".*" -exec rm {} \;; # Crons voor elke individuele host zullen dit script wekelijks uitvoeren met het # commando : archiveer-hostWaarbij de naam van de te archiveren host is
Cron-script voor het checken, rapporteren en corrigeren van ownership van map /var/www/html
########################################################################################## # Cron script voor het checken en corrigeren van ownership van map /var/www/html # # Ben Makkink 21 december 2024 # ########################################################################################## #!/bin/sh bericht="Op "$(date +"%d/%m/%Y %T")" is van /var/www/html de user en/of group gewijzigd.
Probeer de actie te achterhalen die dit veroorzaakt.
De wijziging is teruggezet met het commando: chown www-data:lanshare /var/www/html"; OWN=$(stat -c '%U' /var/www/html); if [ $OWN != www-data ]; then echo $bericht | mail -s 'Website User gewijzigd!' ben@makkink.eu; chown www-data:lanshare /var/www/html; fi
Met het cron-script 'logisp' wordt getest of er verbinding met het internet (Internet Service Provider) is en gelogd naar het tekstbestand 'isp_log.text' in de webroot.
Het logbestand is nu in de browser uit te lezen.
#!/bin/sh NOW=$(date +"%d/%m/%Y %T") ping -q -w3 -c1 8.8.8.8 if [ "$?" != 0 ]; then echo $NOW: "Geen internettoegang" >> /var/www/html/isp_log.txt # else # echo $NOW: "OK" >> /var/www/html/isp_log.txt fi
Het script wordt middels een cron uitgevoerd. Voor bijvoorbeeld elke minuut een check voegen we hiervoor met crontab de volgende regel toe:
* * * * * /usr/local/bin/logisp &> /dev/null
Netwatch
Met het cron-script 'netwatch' wordt een langdurig verlies van de internetverbinding geconstateerd.
In dat geval wordt middels het script 'net-reboot' geprobeerd de verbinding te herstellen door een reboot van de router en glasvezelmodem.
Zie ook Exploring Linux::Projectmap
Klik hier om het script 'netwatch' te bekijken of te downloaden middels rechtsklik en Save As.
Dit script wordt gebruikt i.p.v. voorgaand script 'logisp' en de log wordt geschreven naar /var/www/html/isp_log.txt
Het script wordt middels een cron uitgevoerd. Voor bijvoorbeeld elke minuut een check voegen we hiervoor met crontab de volgende regel toe:
* * * * * /usr/local/bin/netwatch &> /dev/null
Doel van script:
# ******************************************************************** # * Netwatch Ben Makkink 30-09-2022 * # * Detecteert langdurig verlies internet verbinding en probeert * # * het glasvezelmodem en router te re-initieren * # * Als er gedurende 2 uur aaneengesloten geen internetverbinding is * # * worden het glasvezelmodem en de router gereboot (2 pogingen) * # * Als dan nog geen verbinding gemaakt wordt, wordt er 24 uur * # * gepauzeerd voordat opnieuw een poging gedaan wordt. * # ********************************************************************
Zodra de internetverbinding weer hersteld is wordt een notificatie e-mail naar admin verstuurd.
Net-reboot
Het script 'net-reboot` wordt aangeroepen door 'netwatch' om de router en het glasvezelmodem te rebooten.
# ************************************************************** # * Net-reboot Ben Makkink 30-09-2022 * # * Via USB schakelen van netstroom met de CleWare Switch * # * Door de voeding van glasvezel modem en router uit- en * # * en vervolgens weer in te schakelen worden deze gereboot. * # * Dit script wordt gebruikt door script 'netwatch' * # * Zie www.makkink.eu/exploringlinux/html/projectmap.html#usb * # * voor installatie van Clewarecontrol op een Linux server * # ************************************************************** # echo "Voeding voor modem&router wordt uitgeschakeld"; # schakelaar is omgebouwd, stand '1' resulteerd in 'onderbreken' clewarecontrol -c 1 -d 560309 -as 0 1; # echo " Wacht op ledigen van cache"; sleep 15; # echo "Voeding voor modem&router wordt ingeschakeld"; # schakelaar is omgebouwd, stand '0' is ruststand dwz verbonden clewarecontrol -c 1 -d 560309 -as 0 0;
Wol
Script 'wol' wordt gebruikt om een LAN verbonden PC te wekken.
De in onderstaande script genoemde 'ben-pc' moet wel opgenomen zijn in /etc/ethers om deze te koppelen aan het MAC adres
Zie voor nadere uitleg en het script
Server::Backup en Restore sectie WOL met BackupPC
#!/bin/bash
# ***********************************************************************
# * WOL Ben Makkink 31-1-2024 *
# ***********************************************************************
# * Dit script is voor Wake On Lan van een PC in het thuisnetwerk via *
# * een cron. *
# * Om bijvoorbeeld de PC 'ben-pc' om 22:14 uur te wekken voeg de *
# * volgende cron toe: *
# * 14 22 * * * /usr/local/bin/wol ben-pc &> /dev/null *
# ***********************************************************************
ETHWAKE='/usr/bin/sudo /sbin/ether-wake'
$ETHWAKE $1
Wolping
Als BackupPC een hostprofiel uitvoert wordt als eerste een ping naar de host (client-PC) gestuurd.
Alleen als een ping ontvangen wordt gaat de uitvoering verder.
In de BackupPC is 'PingCmd' gezet op: $pingPath -c1 -w3 $host (Hierbij is $pingPath het pad /bin/ping).
Deze entry voor 'PingCmd' wijzigen we in: /usr/local/bin/wolping -c1 -w3 $host
In plaats van het gewone ping programma wordt nu het, zelf aan te maken, script 'wolping' uitgevoerd.
Het 'wolping' script stuurt ook de ping maar als deze niet lukt wordt met ether-wake geprobeerd de host te wekken en na enige wachttijd wordt dan opnieuw een ping gestuurd.
Zie voor nadere uitleg en het script Server::Backup en Restore sectie WOL met BackupPC
WP-htaccess
Cron-script 'wp-htaccess' controleert of er door bijvoorbeeld een wordpress update een wijziging aangebracht is in het .htaccess bestand in de wordpress root /var/www/html.
#******************************************************************** #* WP-HTACCESS script Ben Makkink 13 december 2024 * #* Wordpress maakt gebruik van een .htaccess bestand * #* Als we geen .htaccess willen gebruiken moet de code overgebracht * #* worden naar http configuratie in ../conf-available/wordpress.conf* #* Als echter een update plaatsvind in .htaccess zonder dat er een * #* wordpress update plaatsvond kan dit wijzen op een hack en moet * #* deze code NIET naar wordpress.conf overgezet worden! * #********************************************************************
Zie voor nadere uitleg Server::Apache > Wordpress.conf en het script wp-htaccess
Upgrades
Cron-script 'upgrades' checkt hoeveel upgrades voor geïnstalleerde packages en hun dependables beschikbaar zijn.
# *************************************************************************** # * UPGRADES CRONScript Ben Makkink 26/01/2025 * # * De Ubuntu server voert security upgrades automatisch uit * # * De reguliere updates wordt bij voorkeur op de hand gedaan, om * # * te voorkomen dat mogelijke bugs de werking verstoren. Voordat de upgrade* # * uitgevoerd wordt kan er eerst een systeem backup gemaakt worden zodat * # * zonodig de upgrade ongedaan gemaakt kan worden * # ***************************************************************************
Zie voor meer informatie Server::Configureren > Handmatige upgrades voor packages en dependencies en het script upgrades
Flex-detect en Flex-integrate
Deze scripts werden gebruikt in de ClearOS server. Bij elke verandering Apache configuratie in de WebUI Webconfig moesten eigen directives binnen de Virtual Hosts op de hand opnieuw aangebracht worden.
Het cron-script 'Flex-detect' was om te detecteren dat er een verandering in de configuratie was aangebracht, waarop 'Flex-integrate' aangeroepen werd om de Apache configuratie opnieuw te compileren.
Zie ClearOS Server::Apache >
Custom_httpd.conf compileren met script
Deze scripts zijn met de Ubuntu Server niet nodig, maar worden nog bewaard omdat ze een paar nuttige voorbeelden zijn.
'Flex-detect' is een cron-script
Elke keer dat er een configuratiewijziging uitgevoerd is worden nieuwe virtual host bestanden gemaakt. Dit wordt gedetecteerd door Flex-detect en vervolgens door Flex-integrate opnieuw gecompileerd in
Bekijk hier bijbehorende bestanden zijn /etc/httpd/conf.d/custom_httpd.inc
#!/bin/bash # ************************************************************************ # * Flex-conf detectie en notificatie Ben Makkink 24 juli 2020 * # * Heeft bestand /usr/local/bin/flex-mail.txt nodig voor mail inhoud * # ************************************************************************ # check voor webserver update resulterend in nieuwe flex-{80,443}.conf's if [ -f /etc/httpd/conf.d/flex-80.conf ] then # hernoem flex-{80,443}.conf's naar flex{80,443}.new zodat deze niet # geladen worden maar beschikbaar blijven voor integratie in # custom-httpd.conf mv /etc/httpd/conf.d/flex-80.conf /etc/httpd/conf.d/flex80.new; if [ -f /etc/httpd/conf.d/flex-443.conf ] then mv /etc/httpd/conf.d/flex-443.conf /etc/httpd/conf.d/flex443.new; fi # stuur notificatie naar de admin met de inhoud van flex-mail.txt /usr/sbin/sendmail ben@makkink.eu < /usr/local/bin/flex-mail.txt fi
'Flex-integrate' is het script dat de nieuwe virtual host bestanden flex80.new en flex443.new samen met bestand /etc/httpd/conf.d/custom_httpd.inc geintegreert in het apache configuratiebestand /etc/httpd/conf.d/custom_httpd.conf
#!/bin/bash
# ************************************************************************
# * Flex-integrate detectie en notificatie Ben Makkink 24 juli 2020 *
# * Script detecteert nwe flex-80.conf en flex-443.conf bestanden als *
# * gevolg van een Webconfig update van de HTTPDconfiguratie. *
# * De nwe bestanden worden hernoemd naar flex80.new en flex443.new *
# * en vervolgens worden deze samen met de eigen directives in *
# * /etc/httpd/conf.d/custom_httpd.inc geintegreerd in het webserver *
# * configuratiebestand /etc/httpd/conf.d/custom_httpd.conf *
# * Er wordt ook een notificatie naar de webadmin gestuurd. *
# * Dit script 'flex-integrate' maakt gebruik van de volgende bestanden: *
# * - /etc/httpd/conf.d/custom_httpd.inc *
# * - /etc/httpd/conf.d/flex80.new *
# * - /etc/httpd/conf.d/flex443.new *
# * - /usr/local/bin/flex-mail.txt *
# * - /usr/local/bin/flex-integrate-error.txt *
# ************************************************************************
Bekijk hier de gebruikte bestanden:
/usr/local/bin/flex-detect
/usr/local/bin/flex-integrate
/usr/local/bin/flex-mail.txt
/usr/local/bin/flex-integrate-error.txt
/etc/httpd/conf.d/custom_httpd.inc
/etc/httpd/conf.d/custom_httpd.conf
Zie voor details ClearOS Server::Apache > Custom_httpd.conf compileren met script