Apache2 startet täglich neu um 6:25 Uhr, was auf einem Rechner, der 24/7 läuft wenig Sinn macht. (Denn es gibt Leute, die zu dieser Zeit schon arbeiten.;-)
Deshalb habe ich den täglichen cron-job auf 2:25 Uhr umgestellt.
$ sudo nano /etc/crontab
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 2 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 2 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 2 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
$ sudo service cron reload
Hintergrund
/etc/logrotate.conf
/etc/logrotate.d/apache2
/etc/cron.daily/logrotate
<?php
function naechstertermin($image, $ueberschrift, $arr_termine, $firma = " ")
{
$heute = date("Y/m/d");
$termin=""; foreach ($arr_termine as $value) {
if (($value>=$heute) and ($termin=="")) $termin=$value;
};
$retval="";
if ($termin<>"") {
$arr2 = explode("/",$termin);
$retval = "<p style='height:30px'> <img src='$image' alt='$ueberschrift' width='25' height='35' style='float:left; margin-right:5px; margin-top:-5px;' /> $arr2[2].$arr2[1].$arr2[0] $firma</p>\n";
};
return $retval;
}
function kecl_termine() {
//Termine fuer die Blauen Tonnen in der Schreibweise YYYY/MM/TT //erzeugt durch wnfAbfallkalender (Lazarus) $bttermine = array ( "2019/02/27", "2019/03/13", "2019/03/27", "2019/04/10", "2019/04/24", "2019/05/08", "2019/05/22", "2019/06/05", "2019/06/19", "2019/07/03", "2019/07/17", "2019/07/31", "2019/08/14", "2019/08/28", "2019/09/11", "2019/09/25", "2019/10/09", "2019/10/23", "2019/11/06", "2019/11/21", "2019/12/04", "2019/12/18", "2020/01/02", "2020/01/15", "2020/01/29", "2020/02/12", "2020/02/26", "2020/03/11", "2020/03/25", "2020/04/08", "2020/04/22", "2020/05/06", "2020/05/20", "2020/06/03", "2020/06/17", "2020/07/01", "2020/07/15", "2020/07/29", "2020/08/12", "2020/08/26", "2020/09/09", "2020/09/23", "2020/10/07", "2020/10/21", "2020/11/04", "2020/11/19", "2020/12/02", "2020/12/16", "2020/12/30" );
//Termine fuer die Gelben Tonnen in der Schreibweise YYYY/MM/TT //erzeugt durch wnfAbfallkalender (Lazarus) $gstermine = array ( "2019/03/01", "2019/03/15", "2019/03/29", "2019/04/12", "2019/04/26", "2019/05/10", "2019/05/24", "2019/06/07", "2019/06/21", "2019/07/05", "2019/07/19", "2019/08/02", "2019/08/16", "2019/08/30", "2019/09/13", "2019/09/27", "2019/10/11", "2019/10/25", "2019/11/08", "2019/11/22", "2019/12/06", "2019/12/20", "2020/01/03", "2020/01/17", "2020/01/31", "2020/02/14", "2020/02/28", "2020/03/13", "2020/03/27", "2020/04/11", "2020/04/24", "2020/05/08", "2020/05/22", "2020/06/05", "2020/06/19", "2020/07/03", "2020/07/17", "2020/07/31", "2020/08/14", "2020/08/28", "2020/09/11", "2020/09/25", "2020/10/09", "2020/10/23", "2020/11/06", "2020/11/20", "2020/12/04", "2020/12/18" );
//Termine fuer die Restabfall in der Schreibweise YYYY/MM/TT //erzeugt durch wnfAbfallkalender (Lazarus) $ratermine = array ( "2019/02/27", "2019/03/13", "2019/03/27", "2019/04/10", "2019/04/24", "2019/05/08", "2019/05/22", "2019/06/05", "2019/06/19", "2019/07/03", "2019/07/17", "2019/07/31", "2019/08/14", "2019/08/28", "2019/09/11", "2019/09/25", "2019/10/09", "2019/10/23", "2019/11/06", "2019/11/21", "2019/12/04", "2019/12/18", "2020/01/02", "2020/01/15", "2020/01/29", "2020/02/12", "2020/02/26", "2020/03/11", "2020/03/25", "2020/04/08", "2020/04/22", "2020/05/06", "2020/05/20", "2020/06/03", "2020/06/17", "2020/07/01", "2020/07/15", "2020/07/29", "2020/08/12", "2020/08/26", "2020/09/09", "2020/09/23", "2020/10/07", "2020/10/21", "2020/11/04", "2020/11/19", "2020/12/02", "2020/12/16", "2020/12/30" );
//Termine fuer die Bio-Tonnen in der Schreibweise YYYY/MM/TT //erzeugt durch wnfAbfallkalender (Lazarus) $bio_kecl_termine = array ( "2019/02/28", "2019/03/14", "2019/03/28", "2019/04/11", "2019/04/25", "2019/05/09", "2019/05/23", "2019/06/06", "2019/06/20", "2019/07/04", "2019/07/18", "2019/08/01", "2019/08/15", "2019/08/29", "2019/09/12", "2019/09/26", "2019/10/10", "2019/10/24", "2019/11/07", "2019/11/21", "2019/12/05", "2019/12/19", "2020/01/02", "2020/01/16", "2020/01/30", "2020/02/13", "2020/02/27", "2020/03/12", "2020/03/26", "2020/04/09", "2020/04/23", "2020/05/07", "2020/05/22", "2020/06/04", "2020/06/18", "2020/07/02", "2020/07/16", "2020/07/30", "2020/08/13", "2020/08/27", "2020/09/10", "2020/09/24", "2020/10/08", "2020/10/22", "2020/11/05", "2020/11/19", "2020/12/03", "2020/12/17", "2020/12/31" );
//Termine fuer die Bio-Tonnen in der Schreibweise YYYY/MM/TT //erzeugt durch wnfAbfallkalender (Lazarus) $bio_veolia_termine = array ( "2019/02/22", "2019/03/08", "2019/03/22", "2019/04/05", "2019/04/20", "2019/05/03", "2019/05/17", "2019/05/31", "2019/06/14", "2019/06/28", "2019/07/12", "2019/07/26", "2019/08/09", "2019/08/23", "2019/09/06", "2019/09/20", "2019/10/04", "2019/10/18", "2019/11/01", "2019/11/15", "2019/11/29", "2019/12/13", "2019/12/27", "2020/01/10", "2020/01/24", "2020/02/07", "2020/02/21", "2020/03/06", "2020/03/20", "2020/04/03", "2020/04/17", "2020/05/02", "2020/05/15", "2020/05/29", "2020/06/12", "2020/06/26", "2020/07/10", "2020/07/24", "2020/08/07", "2020/08/21", "2020/09/04", "2020/09/18", "2020/10/02", "2020/10/16", "2020/10/30", "2020/11/13", "2020/11/27", "2020/12/11", "2020/12/28" );
//echo "
kecl_termine();
echo 'KECL Hotline Tel.: 03763 404-0';
echo '
';
echo 'Veolia Hotline Tel.: 0800 088 70 887';
?>
Tags: phpVon Letsencrypt kommen E-Mails mit der Nachricht
You may need to update your client to the latest version in case it is still using the deprecated TLS-SNI-01 validation method. https://community.letsencrypt.org/t/february-13-2019-end-of-life-for-all-tls-sni-01-validation-support/74209
Mit dem neuen certbot das Zertifikat erneuern:
$ certbot --version || /path/to/certbot-auto --version
certbot 0.28.0
$ sudo sh -c "sed -i.bak -e 's/^\(pref_challs.*\)tls-sni-01\(.*\)/\1http-01\2/g' /etc/letsencrypt/renewal/*; rm -f /etc/letsencrypt/renewal/*.bak"
$ sudo certbot renew --dry-run
Jetzt kommt die Fehlermeldung:
IMPORTANT NOTES:
- The following errors were reported by the server:
Domain: bone.nfix.de
Type: connection
Detail: Fetching
http://bone.nfix.de/.well-known/acme-challenge/C1ye-gE-z3kMKFE-UQxZ-pkGaLD19E9FA7bHa6malik:
Error getting validation data
Da certbot den http Zugriff auf bone.nfix.de benötigt, muss in der Fritzbox das Port 80 freigegeben sein.
$ sudo certbot renew
Saving debug log to /var/log/letsencrypt/letsencrypt.log
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Processing /etc/letsencrypt/renewal/bone.nfix.de.conf
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Cert is due for renewal, auto-renewing...
Plugins selected: Authenticator nginx, Installer nginx
Renewing an existing certificate
Performing the following challenges:
http-01 challenge for bone.nfix.de
Waiting for verification...
Cleaning up challenges
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
new certificate deployed with reload of nginx server; fullchain is
/etc/letsencrypt/live/bone.nfix.de/fullchain.pem
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations, all renewals succeeded. The following certs have been renewed:
/etc/letsencrypt/live/bone.nfix.de/fullchain.pem (success)
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Tags: beaglebone letsencrypt
Nachdem ich auf meinen BBB von Ubuntu 16.04 auf Ubuntu 18.04 gewechselt hatte musste ich feststellen, dass das der Radicale-Server nicht mehr lief.
Der Befehl
$ journalctl --unit radicale.service -e
liefert u.a. diese Fehlermeldung:
OSError: [Errno 30] Read-only file system: '/var/log/radicale/log'
den Radicale-Server anhalten
$ sudo systemctl stop radicale
Da ich nicht herausgefunden habe, warum das Filesystem Read-Only sein soll habe ich in
$ sudo nano /etc/radicale/config
das Logging ausgeschaltet
[logging]
## config = /etc/radicale/logging
## debug = True
den Radicale-Server wieder starten
$ sudo systemctl start radicale
Tags: beaglebone Radicale
Mit pyperclip möchte ich einen Text ins Clipboard kopieren.
import pyperclip
def main():
aClipboard = "Dieser Text soll ins Clipboard"
print(aClipboard)
pyperclip.copy(aClipboard)
print("beendet.")
return 0
if __name__ == '__main__':
main()
Das Script liefert die folgenden Warnungen und der Text wird nicht ins Clipboard kopiert.
Dieser Text soll ins Clipboard
(test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:68:35:
The style property GtkButton:child-displacement-x is deprecated and shouldn't be used anymore.
It will be removed in a future version
(test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:69:35: The style property GtkButton:child-displacement-y is deprecated and shouldn't be used anymore. It will be removed in a future version
(test_pyperclip.py:17789): Gtk-WARNING **: 06:38:59.827: Theme parsing error: gtk.css:73:46: The style property GtkScrolledWindow:scrollbars-within-bevel is deprecated and shouldn't be used anymore. It will be removed in a future version beendet.
Da ich die KDE benutze gehe ich davon aus, dass pyperclip das falsche Clipboard anspricht. Mit pyperclip.set_clipboard('klipper') kann pyperclip dazu übereredet werden klipper als Clipboard zu benutzen:
import pyperclip
def main(): aClipboard = "Dieser Text soll ins Clipboard" print(aClipboard) pyperclip.set_clipboard('klipper') pyperclip.copy(aClipboard) print("beendet.") return 0
if name == 'main': main()
Tags: PythonDer Apache soll vom Nutzer wnf ohne Eingabe des Root-Passwortes gestartet werden. Dazu die Datei /etc/sudoers.d/apache2 mit folgenden Inhalt anlegen:
wnf ALL=NOPASSWD: /usr/sbin/service apache2 restart
Zur Beachtung (wiki.ubuntuusers.de)
Tags: Linux-Grundlagen sudoersDie Datei /etc/sudoers sollte immer mit dem Befehl visudo bearbeitet werden, da so eine Syntaxprüfung gewährleistet ist. Die letzte Zeile der Sudoers-Datei muss zudem immer leer sein! Bei der direkten Bearbeitung ohne Prüfung kann der kleinste Tippfehler dazu führen, dass man sich aus dem System aussperrt und nur über den Recovery Modus wieder Zugang erhält.