Dietpi: Problem mit Cron und Auto Backup (von v6.10-6.11)?

Erstellt am 6. Juli 2018  Â·  24Kommentare  Â·  Quelle: MichaIng/DietPi

Erstellen eines Fehlerberichts / Problems:

Benötigte Information:

  • DietPi-Version | 6.11
  • Distribution Version | 9.4
  • Kernel-Version | # 1123 SMP Mi Jun 27 17:35:49 BST 2018
  • SBC-GerĂ€t | RPi 3 Modell B + (arm7l)
  • Netzteil verwendet | 5 V 3,1A
  • SD-Karte verwendet | Transcend Class 10 UHS-I

ZusÀtzliche Informationen (falls zutreffend):

  • Softwaretitel | Dietpi-Cron, Crontab, Dietpi-Backup

Schritte zum Reproduzieren:


Ich habe einen benutzerdefinierten Autostart fĂŒr X mit Chrom im Kioskmodus (24/7) verwendet und dies getan: https://www.youtube.com/watch?v=P9Sk9bNrzeg
Ich habe ein Backup (auf Google Drive) erstellt, das von cron im Ordner cron.daily erstellt wurde. Ich habe ein Skript geschrieben:

#!/bin/sh

G_USER_INPUT=0
/DietPi/dietpi/dietpi-backup 1 > /mnt/rpi/backup.log && tar zcfv /mnt/rpi/backup.tar.gz /mnt/backup/dietpi-backup/ >> /mnt/rpi/backup.log && rclone copy /mnt/rpi/backup.tar.gz dysk: -L >> /mnt/rpi/backup.log && rm -r /mnt/rpi/backup.tar.gz >> /mnt/rpi/backup.log && reboot

Erwartetes Verhalten:


Dieses Skript funktionierte bis zur Version 6.9 von DietPi gut, als es von cron.daily ausgefĂŒhrt wurde.
Das Skript funktioniert gut, wenn ich es manuell ausfĂŒhre.

TatsÀchliches Verhalten:


Nach dem Update auf v.6.10 und v.6.11 funktioniert das Skript nicht von cron.daily aus, aber beim manuellen Start gut.

ZusÀtzliche Details:


Auf backup.log habe ich eine unverstĂ€ndliche Zeichenfolge mit einer folgenden Zeichenfolge: ÜberprĂŒfung auf Zugriff auf den Stammstamm.
Auch geht es nicht von Crontab aus.

Bug Solution available

Hilfreichster Kommentar

@Fourdee OpenSSH_7.7p1, OpenSSL 1.1.0h unter Arch Linux

@MichaIng danke froh, dass ich zufÀllig helfen konnte!

Bitte denken Sie daran, dass ich ein schlechter Systemadministrator bin. Wenn ich diesem Artikel von Tom Ryder folge, habe ich herausgefunden, dass ich eine ziemlich falsch konfigurierte Terminal "Deklaration" -Konfiguration hatte.

Am Ende war das Problem fĂŒr mich behoben

  • Exportieren des korrekten $ TERM in /root/.bashrc
  • Kopieren des korrekten terminfo-Eintrags aus meiner Arch-Installation in den Ordner /root/.terminfo des pi

Ich konnte die terminfo-Datei nicht auf meinen pi scp, da scp nicht installiert ist (vielleicht sollten Sie sie zusammen mit dem Dropbear-Server installieren?), Also habe ich sie auf einen Server hochgeladen, den ich besitze, und sie einfach vom pi heruntergeladen.

Ich bin froh, dass ich helfen konnte, Prost und entschuldige mich noch einmal fĂŒr das Chaos - rock on!

Alle 24 Kommentare

@eljotx
Vielen Dank fĂŒr Ihren Bericht.

G_USER_INPUT=0 sollte bei Cron-AusfĂŒhrungen automatisch erkannt werden und muss daher nicht zugewiesen werden. Aber wenn Sie möchten, dass es Auswirkungen hat, mĂŒssen Sie es exportieren. Dies ist natĂŒrlich einen Versuch wert:
export G_USER_INPUT=0

Bei nicht interaktiven AusfĂŒhrungen wird das Skript beendet, wenn auf dem Ziellaufwerk (nahezu) nicht genĂŒgend freier Speicherplatz festgestellt wird: https://github.com/Fourdee/DietPi/blob/master/dietpi/dietpi-backup#L456
Aber Sie sagen, manuelle AusfĂŒhrung funktioniert gut? Im Falle eines unzureichenden freien Speicherplatzes wird eine Whiptail-Eingabeaufforderung angezeigt, die Ihnen die Wahl lĂ€sst, diese zu ignorieren oder zu beenden.

Über die ProtokolleintrĂ€ge werden einige kryptische Farbcodes + checking for elevation root access erwartet. Versuchen:
cat /mnt/rpi/backup.log
um die Farbcodes aktiv und damit das Protokoll formatiert zu haben. Bitte geben Sie diese Ausgabe auch hier an, damit wir ĂŒberprĂŒfen können, in welchem ​​Stadium das Problem aufgetreten ist.

Das Skript funktioniert gut, wenn ich es manuell ausfĂŒhre.

Seltsam.

Versuchen Sie, den Cron-Job auszufĂŒhren, und fĂŒgen Sie die Protokollergebnisse /mnt/rpi/backup.log

NB: dietpi-backup gibt rsync automatisch in die Protokolldatei /var/log/dietpi-backup.log . Sie können dies auch verwenden.

Also versuche ich, den Cron-Job ohne G_USER_INPUT = 0 auszufĂŒhren (ich habe dies aus dem Skript entfernt) und ...

Meine Sicherungsprotokolldatei aus /mnt/rpi/backup.log
[90m[[0m[33m......[90m][0m Checking for (elevated) root access[0m

dietpi-backup.log ist leer

Ich habe nach dem Start von cron keinen aktiven Prozess mehr gesehen.

Also habe ich zum Testen eines anderen Skripts hinzugefĂŒgt, um die Ausgabe in der Datei nach dem Start von cron zu sehen:

#!/bin/sh

echo 'Cron works!' > /mnt/rpi/cronworks.log

Dieses Skript wurde jedoch nicht gestartet. Es gibt keine Datei "cronworks.log" unter / mnt / rpi /
Es ist seltsam, weil es eine Ausgabedatei (backup.log) von meinem Skript mit Backup (vom 1. meines Beitrags) gibt, aber nein von diesem einfachen

@eljotx
Okay, es scheint mindestens genauso gut einen Fehler mit cron zu geben. Beachten Sie, dass cron die Skripte ĂŒber run-parts /etc/cron.X/script startet und es einige Regeln gibt, z. B. mĂŒssen die Skripte im Besitz von root (AFAIK) sein und sicherer, dass die Skripte keine Dateienden haben dĂŒrfen. Das bedeutet, dass /etc/cron.daily/script.sh ĂŒbersprungen wird, der Name muss stattdessen /etc/cron.daily/script .

Es sollte auch nicht benötigt werden, aber versuchen Sie, #!/bin/bash als Shebang zu verwenden, wenn Sie mit DietPi-Skripten arbeiten. Diese selbst haben #!/bin/bash , aber um ausfallsicher zu sein, versuchen Sie, es auch im Cron-Skript zu verwenden.

Das Skript hatte immer den Namen "backup" (ohne .sh), ich Àndere "#! / Bin / sh" auch im Skript in "#! / Bin / bash", und dieses Skript gehört root. Mein "Test" -Skript aus dem letzten Beitrag funktioniert jetzt auch.

Ich habe alles versucht, funktioniert aber immer noch nicht. Ich Ă€ndere das Skript so, dass es nach Abschluss eines Jobs in eine Protokolldatei gedruckt wird, und ich habe gesehen, dass das Skript gestartet wird, aber die Sicherung nicht gestartet oder beendet wird (dietpi-backup.log ist leer), da nicht zum nĂ€chsten Auftrag wie tar, rclone usw. Und auch nachdem ich cron ausgefĂŒhrt habe, habe ich gesehen, dass process / usr / sbin / cron -f funktioniert und -bash - ist das normal?

Das Skript funktioniert immer noch, wenn ich es manuell ausfĂŒhre. Wenn die Sicherung abgeschlossen ist, muss ich auf OK klicken und abbrechen (Whiptail-Bildschirme). Danach werden die nĂ€chsten Jobs gestartet.

Ich denke, dass das Problem mit der Verwendung von Dietpi-Backup fĂŒr Auto-Backup von Cron gestartet ist. Es funktionierte auf Version 6.9, aber nach dem Umschreiben von dietpi-backup funktionierte es nicht mehr.

@eljotx
Also nochmal, nur um sicher zu gehen:

  • Wenn Sie manuell ausfĂŒhren /DietPi/dietpi/dietpi-backup 1 wird erfolgreich durchlaufen?
  • Wenn Sie G_USER_INPUTS=0 /DietPi/dietpi/dietpi-backup 1 ausfĂŒhren, funktioniert dies ebenfalls fehlerfrei und zeigt Folgendes an:
root@VM-Jessie:~# G_USER_INPUTS=0 /DietPi/dietpi/dietpi-backup 1
[  OK  ] Root access verified.
[  OK  ] DietPi-Drive_Manager | RootFS R/W access verified.

[  OK  ] DietPi-Backup | Checking for pre-req APT packages: rsync
[ INFO ] DietPi-Backup | Flagged for installation: rsync
[  OK  ] DietPi-Backup | APT installation for: rsync, please wait...
Selecting previously unselected package rsync.
(Reading database ... 36227 files and directories currently installed.)
Preparing to unpack .../rsync_3.1.1-3+deb8u1_amd64.deb ...
Unpacking rsync (3.1.1-3+deb8u1) ...
Processing triggers for systemd (215-17+deb8u7) ...
Setting up rsync (3.1.1-3+deb8u1) ...
Processing triggers for systemd (215-17+deb8u7) ...

[  OK  ] DietPi-Backup | G_AGI: rsync

 DietPi-Backup
─────────────────────────────────────────────────────
 Mode: Backup

[  OK  ] DietPi-Backup | DietPi-Userdata validation: /mnt/dietpi_userdata
[ SUB1 ] DietPi-Services > stop
[  OK  ] DietPi-Services | occ maintenance:mode --on
[  OK  ] DietPi-Services | stop : cron
[  OK  ] DietPi-Services | stop : sonarr
[  OK  ] DietPi-Services | stop : lighttpd
[  OK  ] DietPi-Services | stop : php5-fpm
[  OK  ] DietPi-Services | stop : mysql
[ SUB1 ] DietPi-Services > stop
[  OK  ] DietPi-Services | stop : cron
[  OK  ] DietPi-Services | stop : sonarr
[  OK  ] DietPi-Services | stop : lighttpd
[  OK  ] DietPi-Services | stop : php5-fpm
[  OK  ] DietPi-Services | stop : mysql
[ INFO ] DietPi-Backup | Backing up to: /mnt/dietpi-backup
[  OK  ] DietPi-Backup | Free space check: path=/mnt/dietpi-backup/data | available=5695 MB | required=1861 MB
[  OK  ] DietPi-Backup | rsync -aH --delete --delete-excluded --exclude-from=/tmp/.dietpi-backup_filter_inc_exc -v --log-file=/var/log/dietpi-backup.log / /mnt/dietpi-backup/data/
[ INFO ] DietPi-Backup | Backup Completed:

Backup was saved to:
- /mnt/dietpi-backup
- Log file: /var/log/dietpi-backup.log
[ SUB1 ] DietPi-Services > start
[  OK  ] DietPi-Services | start : mysql
[  OK  ] DietPi-Services | start : php5-fpm
[  OK  ] DietPi-Services | start : lighttpd
[  OK  ] DietPi-Services | start : sonarr
[  OK  ] DietPi-Services | start : cron
[ SUB2 ] DietPi-Process_tool > Apply
[  OK  ] DietPi-Process_tool | Completed
[  OK  ] DietPi-Services | occ maintenance:mode --off

  • AusfĂŒhren der genauen Befehlszeile aus dem Skript
/DietPi/dietpi/dietpi-backup 1 > /mnt/rpi/backup.log && tar zcfv /mnt/rpi/backup.tar.gz /mnt/backup/dietpi-backup/ >> /mnt/rpi/backup.log && rclone copy /mnt/rpi/backup.tar.gz dysk: -L >> /mnt/rpi/backup.log && rm -r /mnt/rpi/backup.tar.gz >> /mnt/rpi/backup.log && reboot

funktioniert auch und zeigt, dass alle in /mnt/rpi/backup.log ausgefĂŒhrt und beendet wurden?

  • run-parts --test /etc/cron.daily listet Ihr Skript auf (wenn es tĂ€glich verfĂŒgbar ist, ansonsten anpassen)
  • /usr/sbin/cron -f + -bash wird ja erwartet, da es aufgrund von #!/bin/bash eine Bash-Umgebung startet.

Wenn all dies zutrifft, können Sie versuchen, Run-Parts manuell zu starten und zu prĂŒfen, ob sie wie erwartet ausgefĂŒhrt werden:

  • Verschieben / Kopieren des Skripts in einen separaten Ordner, z. B. ~/testdir/backup
  • Dann run-parts ~/testdir

Ich habe getestet, wie Sie zeigen, und bei jeder Ihrer Fragen: Ja, alles funktioniert, wenn ich es manuell starte.
Ich habe es mit dem Befehl run-parts getestet, aber es funktioniert immer noch - wenn ich es manuell mache.

Mein Skript wird nach der Verwendung von run-parts --test /etc/cron.daily aufgelistet

Wenn ich G_USER_INPUTS = 0 hinzufĂŒge und das Skript manuell starte, sollte ich dann die Bildschirme (Whiptail) mit Informationen zum Protokoll usw. sehen? Weil ich es immer sehe.

@eljotx
G_USER_INPUTS=0 deaktiviert nur die Anzeige von Whiptail-MenĂŒs. Informationen werden nur als Terminalnachrichten angezeigt und Fragen werden mit "Nein" beantwortet (Abbrechen bei unzureichender ÜberprĂŒfung des freien Speicherplatzes, keine Protokollansicht).

Um es fĂŒr das Skript zu erzwingen, mĂŒssen Sie es entweder exportieren, bevor Sie das Skript ausfĂŒhren:

#!/bin/bash
export G_USER_INPUTS=0
/DietPi/dietpi/dietpi-backup 1

oder einfacher, geben Sie es einfach direkt weiter: G_USER_INPUTS=0 /DietPi/dietpi/dietpi-backup 1

Ich habe gerade erkannt, dass Sie G_USER_INPUT=0 oben ohne S haben. Es muss G_USER_INPUTS=0 mit S .

Wenn die Variable nicht exportiert wird, bestimmen Skripte, ob Benutzereingaben vorgenommen werden können oder nicht. Bei der AusfĂŒhrung von Cron- und z. B. Systemd-Einheiten sollten alle DietPi-Skripte automatisch G_USER_INPUTS=0 ermitteln und zuweisen.
Sie können ĂŒberprĂŒfen, ob unsere Methode funktioniert, indem Sie zum Start Ihres Cron-Jobs (oder eines Testjobs) Folgendes hinzufĂŒgen:
[[ -t 0 ]] && echo 'This environments allows user inputs' > /mnt/rpi/inputs.log || echo 'This environment does not allow user inputs' > /mnt/rpi/inputs.log
Wenn das Skript manuell ausgefĂŒhrt wird, sollte angegeben werden, dass Benutzereingaben zulĂ€ssig sind (Whiptail-MenĂŒs werden angezeigt). Wenn es ĂŒber Cron gestartet wird, sollte dies nicht der Fall sein, und keine Whiptail-MenĂŒs sollten das Skript hĂ€ngen lassen.

Zuerst teste ich G_USER_INPUTS=0 und wenn ich das Skript manuell starte, logge ich mich ein:
This environments allows user inputs
sonst wenn mit cron anfangen:
This environment does not allow user inputs

Als nĂ€chstes versuche ich mein Skript folgendermaßen zu Ă€ndern:

#!/bin/bash
export G_USER_INPUTS=0
date > /mnt/rpi/backup.log && /DietPi/dietpi/dietpi-backup 1 && (echo "Backup: DONE. " >> /mnt/rpi/backup.log && tar zcfv /mnt/rpi/backup.tar.gz /mnt/backup/dietpi-backup/ && echo "Tar backup: DONE. " >> /mnt/rpi/backup.log && rclone copy /mnt/rpi/backup.tar.gz dysk: && echo "Copy to GDrive: DONE. " >> /mnt/rpi/backup.log && rm -r /mnt/rpi/backup.tar.gz && echo "Remove tar: DONE." >> /mnt/rpi/backup.log && reboot) || echo "Backup failed!" >> /mnt/rpi/backup.log

und dietpi-backup.log ist noch leer, aber backup.log:

als cron gestartet wurde und dieses Skript automatisch startet:

pon, 9 lip 2018, 18:54:01 CEST
Backup failed!

als ich das Skript manuell startete:

pon, 9 lip 2018, 18:58:40 CEST
Backup: DONE.
Tar backup: DONE.
Copy to GDrive: DONE.
Remove tar: DONE.

Es ist sehr nervig ... als nÀchstes hat mein Skript nur:

#!/bin/bash
export G_USER_INPUTS=0
/DietPi/dietpi/dietpi-backup 1

und funktioniert immer noch nicht, wenn dieses Skript von cron gestartet wird.

Das Problem ist immer noch, dass Dietpi-Backup von Cron ab Version 6.10 gestartet wurde. Ich denke, das ist ein Problem mit den Änderungen, die Sie in Version 6.10 im Dietpi-Backup-Skript vorgenommen haben.

dietpi-backup.log ist noch leer

@eljotx
Vielen Dank fĂŒr Ihre Testanstrengungen.
Ich werde unsere verÀnderten durchgehen. Habe bisher keine Ahnung. Zumindest nach Ihren Tests hÀngt das Skript tatsÀchlich nicht (whiptail / G_USER_INPUTS ist nicht das Problem), aber es schlÀgt fehl.

Einige eigene Tests durchgefĂŒhrt:

[......] Checking for (elevated) root access

Nach dem Kommentieren der Root-BenutzerprĂŒfung fĂŒhrt die AusfĂŒhrung innerhalb von dietpi-backup ĂŒber cron zu:
[FAILED] RootFS is currently Read Only, unable to continue.
Aber:

root@VM-Jessie:~# G_CHECK_ROOTFS_RW
[  OK  ] Root access verified.
[  OK  ] DietPi-Drive_Manager | RootFS R/W access verified.

@eljotx

tput ist das Problem:
tput: No value for $TERM and no -T specified

  • Interessant, wie wir das auch mit v6.9 nannten đŸ€”.

Fix: https://github.com/Fourdee/DietPi/commit/82ac7b32d32dca9db4fdb824c7ead80174844090

Dieser Patch behebt auch ein anderes Problem: "run_ntpd 1", das tĂ€glich oder stĂŒndlich von cron ausgefĂŒhrt wird, synchronisiert die Zeit nicht (der Zeitstempel von / var / lib / systemd / clock Ă€ndert sich nicht).

@kmakisara
Jep du hast recht, das macht Sinn.
Um zu vermeiden, dass manuelle Skripte bearbeitet werden, um Korrekturen anzuwenden, sollten alle mit demselben Problem Folgendes tun: wget https://raw.githubusercontent.com/Fourdee/DietPi/82ac7b32d32dca9db4fdb824c7ead80174844090/dietpi/func/dietpi-globals -O /DietPi/dietpi/func/dietpi-globals

Ich denke, einige unserer offenen Fragen hĂ€ngen damit zusammen. Wenn run_ntpd in cron.hourly fehlschlĂ€gt, wird dietpi-logclear auch danach nicht mehr aufgerufen, was zum AuffĂŒllen von / var / log fĂŒhrt: https://github.com/Fourdee/DietPi/issues/ 1920

Ich frage mich nur, warum dieses Problem zuerst mit Version 6.10 + aufgetreten ist, da wir bereits zuvor tput in unseren Cron-Jobs verwendet haben.
Vielleicht kann jemand die VerĂ€nderung finden, die die Probleme verursacht hat, damit wir wissen, wie wir uns in Zukunft besser darum kĂŒmmern können:

Weitere Tests dazu:

root@VM-Stretch:/tmp# cat /etc/cron.minutely/test
#!/bin/bash

echo "$TERM" &> /tmp/cron.test
tput ed &>> /tmp/cron.test
echo 'finish' &>> /tmp/cron.test
root@VM-Stretch:/tmp# cat cron.test
dumb
tput: No value for $TERM and no -T specified
  • $TERM auf cron ist auf dumb
  • tput behauptet, dass es keinen Wert fĂŒr die Variable gibt, auch wenn dieser ungĂŒltig ist.
root@VM-Stretch:/tmp# TERM='dumb' tput cols
237
root@VM-Stretch:/tmp# export TERM='dumb' tput cols
root@VM-Stretch:/tmp# export TERM='dumb' tput cols && echo continue
continue
  • Da ungĂŒltiges $ TERM zu keinem Fehler fĂŒhrt (nur zu keiner Ausgabe von tput), scheint der Fehler von cron tput damit zu zusammenhĂ€ngen, dass -T fehlt, [[ -t 0 ]] zu false fĂŒhrt. Vielleicht hat sich auch das vorher anders verhalten. Letztes ncurses-bin APT-Update am 15.02.2018: http://ftp.de.debian.org/debian/pool/main/n/ncurses/

  • Wir hatten bereits Probleme mit nicht interaktiven / ungĂŒltigen Terminals. Beenden Sie daher jetzt Dietpi- * Skripte, wenn leere $ TERM oder ' unknown ' gefunden werden: https://github.com/Fourdee/DietPi/blob/ Testen / Dietpi / Funk / Dietpi-Globals # L30 -L35

  • Ein inkonsistentes Gebot, da wir möglicherweise nicht interaktive AusfĂŒhrungen zulassen möchten (auch ohne angeschlossenes Terminal), aber darauf achten mĂŒssen, tput bzw. andere Befehle aufzurufen, die ein gĂŒltiges Terminal benötigen.

Test auf v6.9:

root<strong i="6">@DietPi</strong>:/tmp# cat cron.test
dumb
tput: No value for $TERM and no -T specified
finish
  • Der Fehler wird angezeigt, das Skript wird jedoch fortgesetzt.

Das APT-Update enthĂ€lt keine Cron und / oder FlĂŒche (Reduzierung durch getestete, nicht verwandte Pakete):

  • Auch nach apt-get dist-upgrade und Neustart stoppt cron die AusfĂŒhrung nach einem Eingabefehler nicht:
root<strong i="15">@DietPi</strong>:/tmp# cat /etc/cron.minutely/test
#!/bin/bash

echo "$TERM" &> /tmp/cron.test
[[ -t 0 ]] && echo 'interactive' &>> /tmp/cron.test
tput ed &>> /tmp/cron.test
echo 'finish' &>> /tmp/cron.test
root<strong i="16">@DietPi</strong>:/tmp# cat cron.test
dumb
tput: No value for $TERM and no -T specified
finish
  • dietpi-update bis v6.11 master: Sehr seltsam, immer noch kein Problem ...
root<strong i="22">@DietPi</strong>:/tmp# cat cron.test
dumb
tput: No value for $TERM and no -T specified
finish
  • HinzufĂŒgen einer Dietpi-Backup-AusfĂŒhrung:
root<strong i="27">@DietPi</strong>:/tmp# cat /etc/cron.minutely/test
#!/bin/bash

echo "$TERM" &> /tmp/cron.test
[[ -t 0 ]] && echo 'interactive' &>> /tmp/cron.test
tput ed &>> /tmp/cron.test
/DietPi/dietpi/dietpi-backup 1 &>> /tmp/cron.test
echo 'finish' &>> /tmp/cron.test
root<strong i="28">@DietPi</strong>:/tmp# cat cron.test
dumb
tput: No value for $TERM and no -T specified
[......] Checking for (elevated) root accesstput: No value for $TERM and no -T specified
/DietPi/dietpi/func/dietpi-globals: line 266: ( 38 + 6 ) /  : syntax error: operand expected (error token is "/  ")
finish
  • Das Skript schlĂ€gt fehl, aber der Cron-Job wird fortgesetzt. Test mit dietpi-globals v6.9:
root<strong i="34">@DietPi</strong>:/tmp# cat cron.test
dumb
tput: No value for $TERM and no -T specified
         Checking for (elevated) root accesstput: No value for $TERM and no -T specified
/DietPi/dietpi/func/dietpi-globals: line 308: ((: lines=(38+6)/ : syntax error: operand expected (error token is "/ ")
tput: No value for $TERM and no -T specified
[  OK  ] Root access verified.
         DietPi-Run_ntpd | systemctl restart systemd-timesyncdtput: No value for $TERM and no -T specified
/DietPi/dietpi/func/dietpi-globals: line 308: ((: lines=(38+6)/ : syntax error: operand expected (error token is "/ ")
[..    ] tput: No value for $TERM and no -T specified
[  OK  ] DietPi-Run_ntpd | systemctl restart systemd-timesyncd
[ INFO ] DietPi-Run_ntpd | NTPD: Waiting for completion of systemd-timesyncd (1/60)
[  OK  ] DietPi-Run_ntpd | NTPD: systemd-timesyncd synced
[  OK  ] NTPD: time sync | Completed
finish

- Okay, es hĂ€ngt mit globalen Änderungen zusammen, aber da tput fehlgeschlagen ist und nicht, warum werden unsere Skripte jetzt beendet und nicht auf Version 6.9 beendet?

Verwandte Änderungen identifiziert: https://github.com/Fourdee/DietPi/blob/master/dietpi/func/dietpi-globals#L266
local lines=$(( (${#input_string}+6)/$(tput cols) )) fĂŒhrt zum vollstĂ€ndigen Beenden des Skripts, wĂ€hrend (vorherige)

local lines
(( lines=(${#input_string}+6)/$(tput cols) ))

zeigte den Fehler, ließ aber das Skript weiterlaufen (siehe oben).

Fix https://github.com/Fourdee/DietPi/commit/82ac7b32d32dca9db4fdb824c7ead80174844090 funktioniert und ist auch die sauberste Lösung, da tput in nicht interaktiven Shells vollstĂ€ndig ĂŒbersprungen werden. Um jedoch ausfallsicher zu sein, sollten wir zur vorherigen Methode zurĂŒckkehren, um zuerst die Variable zu deklarieren und anschließend in der arithmetischen Umgebung einen Wert zuzuweisen: Commit done https://github.com/Fourdee/DietPi/commit/0f18aa4dc0af8ab910a0173dce8849d5b53c30b0

@eljotx @kmakisara
Um ein Gebot zu bereinigen, habe ich ein neues Problem eröffnet. Versuchen Sie, das dort erwĂ€hnte Update anzuwenden, und melden Sie es zurĂŒck, wenn alle Probleme behoben sind :

Ich werde dieses Problem zugunsten des neuen schließen.

Ich konnte erfolgreich in meine v6.13 ssh, aber es wĂŒrde gleich danach hĂ€ngen.

Der Befehl "tput cols" gab tput: unknown terminal "rxvt-256color" aus , was zu einem leeren Wert in Zeile 328 der dietpi-Anmeldung fĂŒhrte, sodass er nach dem erfolgreichen Lesen der Datenbank beim ersten Start fĂŒr immer hĂ€ngen blieb.

Das Exportieren von TERM = xterm, einem hÀsslichen Hack, schien das Anmeldeskript behoben zu haben und kann nun mit der Installation beginnen.

Wenn dies der falsche Abschnitt ist, haben Sie bitte etwas Geduld, da ich nicht wirklich weiß, wie man Github-Probleme verwendet. Ich habe diesen Thread nach stundenlangem nutzlosem googeln nach einem Fehler gefunden. Wenn Sie ihn verschieben, bleibt möglicherweise ein Rest ĂŒber rxvt-256color-Fehler ĂŒbrig, falls jemand das gleiche Problem hat.

Freundliche GrĂŒĂŸe!

@ Wuhei

Hallo,

Danke fĂŒr den Bericht und die Lösung 👍

Welchen SSH-Client verwenden Sie?

@ Vierer
Ich habe dafĂŒr eine separate Ausgabe eröffnet. Identifizierte das Problem: https://github.com/Fourdee/DietPi/issues/2034

@ Wuhei
Nachdem Sie sich bei SSH angemeldet haben, versuchen Sie bitte: export TERM='xterm-256color' €: Ah, das ist im Grunde das, was Sie bereits herausgefunden haben 😄.
Wenn dies funktioniert, können Sie /etc/profile.d/ ein Skript hinzufĂŒgen, das Folgendes enthĂ€lt:
[[ $SSH_TTY ]] && [[ $TERM =~ 256 ]] && export TERM='xterm-256color'

  • In Worten: Wenn es sich um eine SSH-Verbindung handelt und der SSH-Client ein 256-Bit-Farbterminal ĂŒbergeben hat, passen Sie es auf xterm-256color , was von DietPi unterstĂŒtzt wird.

Eine Alternative wÀre, ein Paket zu installieren, das mehr Terminaldefinitionen enthÀlt: G_AGI ncurses-term

@Fourdee OpenSSH_7.7p1, OpenSSL 1.1.0h unter Arch Linux

@MichaIng danke froh, dass ich zufÀllig helfen konnte!

Bitte denken Sie daran, dass ich ein schlechter Systemadministrator bin. Wenn ich diesem Artikel von Tom Ryder folge, habe ich herausgefunden, dass ich eine ziemlich falsch konfigurierte Terminal "Deklaration" -Konfiguration hatte.

Am Ende war das Problem fĂŒr mich behoben

  • Exportieren des korrekten $ TERM in /root/.bashrc
  • Kopieren des korrekten terminfo-Eintrags aus meiner Arch-Installation in den Ordner /root/.terminfo des pi

Ich konnte die terminfo-Datei nicht auf meinen pi scp, da scp nicht installiert ist (vielleicht sollten Sie sie zusammen mit dem Dropbear-Server installieren?), Also habe ich sie auf einen Server hochgeladen, den ich besitze, und sie einfach vom pi heruntergeladen.

Ich bin froh, dass ich helfen konnte, Prost und entschuldige mich noch einmal fĂŒr das Chaos - rock on!

@ Wuhei
Jep, das Setzen von $ TERM innerhalb von /root/.bashrc funktioniert natĂŒrlich auch, wenn es zu /etc/profile[.d/] hinzugefĂŒgt wird, wird es systemweit fĂŒr alle Benutzer gelöst, was eine Lösung ist, die wir mit DietPi anstreben wĂŒrden.

Der Artikel, den Sie verlinkt haben, ist ziemlich nett und erklĂ€rt alles und die Möglichkeiten sehr gut 👍. Sie haben den erforderlichen Terminaltyp also grundsĂ€tzlich manuell installiert. In dem Artikel wird auch das Paket ncurses-term als Option zur Installation einer Vielzahl von Terminaldefinitionen erwĂ€hnt. Aber um DietPi schlank zu halten, möchte ich dieses Paket fĂŒr solche seltenen FĂ€lle nicht vorinstallieren. Verwenden Sie stattdessen besser die bashrc / profile-Lösung. Es ist auch möglich, einfach die TerminalunterstĂŒtzung zu ĂŒberprĂŒfen, bevor das Update auf die SSH-Anmeldung angewendet wird.

Zum Testen mit dem PuTTY-Client: PuTTY> Connection > Data > Terminal-type string

Informationen zur Installation von SCP: Es gibt verschiedene andere DateiĂŒbertragungsprotokolle, FTP, SFTP oder Netzwerklaufwerke NFS, SMB, um Dateien zu ĂŒbertragen. Ich wĂŒrde keine Vorinstallation durchfĂŒhren, sondern dem Benutzer die Wahl ĂŒberlassen, wie Dateien vom Client zum Server ĂŒbertragen werden sollen. USB-Stick, externes Laufwerk ist natĂŒrlich auch möglich oder einfach kopieren und in SSH-Terminal einfĂŒgen, falls. Aber als allgemeine Lösung wĂŒrde ich trotzdem einen der beiden oben genannten Wege wĂ€hlen.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen