Dietpi: cron 및 μžλ™ 백업에 λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆκΉŒ (v6.10-6.11λΆ€ν„°)?

에 λ§Œλ“  2018λ…„ 07μ›” 06일  Β·  24μ½”λ©˜νŠΈ  Β·  좜처: MichaIng/DietPi

버그 λ³΄κ³ μ„œ / 문제 λ§Œλ“€κΈ° :

ν•„μˆ˜ 정보:

  • DietPi 버전 | 6.11
  • Distro 버전 | 9.4
  • 컀널 버전 | # 1123 SMP Wed 6 μ›” 27 일 17:35:49 BST 2018
  • SBC μž₯치 | RPi 3 λͺ¨λΈ B + (arm7l)
  • μ‚¬μš© 전원 | 5V 3.1A
  • μ‚¬μš© 된 SD μΉ΄λ“œ | μ΄ˆμ›” 클래슀 10 UHS-I

μΆ”κ°€ 정보 (ν•΄λ‹Ήλ˜λŠ” 경우) :

  • μ†Œν”„νŠΈμ›¨μ–΄ 제λͺ© | dietpi-cron, crontab, dietpi-backup

μž¬ν˜„ 단계 :


ν‚€μ˜€μŠ€ν¬ λͺ¨λ“œ (24/7)μ—μ„œ 크둬을 μ‚¬μš©ν•˜μ—¬ X에 μ‚¬μš©μž 지정 μžλ™ μ‹œμž‘μ„ μ‚¬μš©ν–ˆμœΌλ©° λ‹€μŒμ„ μˆ˜ν–‰ν•©λ‹ˆλ‹€. https://www.youtube.com/watch?v=P9Sk9bNrzeg
cron.daily 폴더에 cron이 λ§Œλ“  λ°±μ—… (Google λ“œλΌμ΄λΈŒμ—)을 μ„€μ •ν–ˆμŠ΅λ‹ˆλ‹€. 슀크립트λ₯Ό μž‘μ„±ν–ˆμŠ΅λ‹ˆλ‹€.

#!/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

μ˜ˆμƒλ˜λŠ” λ™μž‘ :


이 μŠ€ν¬λ¦½νŠΈλŠ” cron.dailyμ—μ„œ μ‹€ν–‰λ˜μ—ˆμ„ λ•Œ DietPi 버전 6.9κΉŒμ§€ 잘 μž‘λ™ν–ˆμŠ΅λ‹ˆλ‹€.
μˆ˜λ™μœΌλ‘œ μ‹€ν–‰ν•  λ•Œ μŠ€ν¬λ¦½νŠΈκ°€ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

μ‹€μ œ 행동 :


v.6.10 및 v.6.11둜 μ—…λ°μ΄νŠΈ ν•œ ν›„ cron.dailyμ—μ„œ μŠ€ν¬λ¦½νŠΈκ°€ μž‘λ™ν•˜μ§€ μ•Šμ§€λ§Œ μˆ˜λ™μœΌλ‘œ μ‹œμž‘ν•˜λ©΄ μ œλŒ€λ‘œ μž‘λ™ν•©λ‹ˆλ‹€.

μΆ”κ°€ μ„ΈλΆ€ 정보 :


backup.logμ—λŠ” λ‹€μŒκ³Ό 같은 λ¬Έμžμ—΄μ΄μžˆλŠ” 이해할 μˆ˜μ—†λŠ” λ¬Έμžμ—΄μ΄ μžˆμŠ΅λ‹ˆλ‹€. μƒμŠΉ 루트 μ•‘μ„ΈμŠ€λ₯Ό ν™•μΈν•©λ‹ˆλ‹€.
λ˜ν•œ crontabμ—μ„œ μ‹œμž‘λ˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

Bug Solution available

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

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

@MichaIng μš°μ—°νžˆ 도와 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

λ‚΄κ°€ λ‚˜μœ μ‹œμŠ€ν…œ κ΄€λ¦¬μžμ΄κ³  Tom Ryder의이 기사λ₯Ό 따라 κ°€λ©΄μ„œ 터미널 "μ„ μ–Έ"ꡬ성이 μƒλ‹Ήνžˆ 잘λͺ» κ΅¬μ„±λ˜μ—ˆμŒμ„ μ•Œμ•˜μŠ΅λ‹ˆλ‹€.

κ²°κ΅­ λ‚˜λ₯Ό μœ„ν•΄ 문제λ₯Ό ν•΄κ²° ν•œ 것은

  • /root/.bashrc에 μ˜¬λ°”λ₯Έ $ TERM 내보내기
  • pi의 /root/.terminfo ν΄λ”μ—μžˆλŠ” λ‚΄ μ•„μΉ˜ μ„€μΉ˜μ—μ„œ μ˜¬λ°”λ₯Έ terminfo ν•­λͺ© 볡사

scpκ°€ μ„€μΉ˜λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— (dropbear μ„œλ²„μ™€ ν•¨κ»˜ μ„€μΉ˜ν•˜λŠ” 것을 κ³ λ €ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?) λ‚΄ pi에 terminfo νŒŒμΌμ„ scp ν•  수 μ—†μ–΄μ„œ λ‚΄κ°€ μ†Œμœ  ν•œ μ„œλ²„μ— μ—…λ‘œλ“œν•˜κ³  piμ—μ„œ κ°€μ Έ μ™”μŠ΅λ‹ˆλ‹€.

도와 λ“œλ¦΄ μˆ˜μžˆμ–΄μ„œ 기쁘고, μ‘μ›ν•˜κ³ , 엉망진창에 λŒ€ν•΄ λ‹€μ‹œ ν•œ 번 μ£„μ†‘ν•©λ‹ˆλ‹€.

λͺ¨λ“  24 λŒ“κΈ€

λΏ‘λΏ‘
μ‹ κ³  ν•΄ μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€.

G_USER_INPUT=0 λŠ” μ‹€μ œλ‘œ 크둠 μ‹€ν–‰μ‹œ μžλ™μœΌλ‘œ κ°μ§€λ˜μ–΄μ•Όν•˜λ―€λ‘œ ν• λ‹Ή ν•  ν•„μš”κ°€ μ—†μŠ΅λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 영ν–₯을 미치렀면 λ‚΄ λ³΄λ‚΄μ•Όν•©λ‹ˆλ‹€. λ¬Όλ‘  μ‹œλ„ν•΄ λ³Ό κ°€μΉ˜κ°€ μžˆμŠ΅λ‹ˆλ‹€.
export G_USER_INPUT=0

λΉ„λŒ€ν™” ν˜• μ‹€ν–‰μ—μ„œ λŒ€μƒ λ“œλΌμ΄λΈŒμ—μ„œ (κ°€κΉŒμš΄) μ—¬μœ  곡간이 λΆ€μ‘±ν•œ 경우 μŠ€ν¬λ¦½νŠΈκ°€ μ’…λ£Œλ©λ‹ˆλ‹€ : https://github.com/Fourdee/DietPi/blob/master/dietpi/dietpi-backup#L456
κ·ΈλŸ¬λ‚˜ μˆ˜λ™ 싀행이 잘 μž‘λ™ν•œλ‹€κ³  λ§ν•©λ‹ˆκΉŒ? μ—¬μœ  곡간이 λΆ€μ‘±ν•œ 경우 휩 ν…ŒμΌ ν”„λ‘¬ν”„νŠΈκ°€ ν‘œμ‹œλ˜λ©΄ λ¬΄μ‹œν•˜κ±°λ‚˜ μ’…λ£Œ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

둜그 ν•­λͺ©μ— λŒ€ν•΄ 일뢀 μ•”ν˜Έν™” 된 색상 μ½”λ“œ + checking for elevation root access κ°€ μ˜ˆμƒλ©λ‹ˆλ‹€. μ‹œν—˜:
cat /mnt/rpi/backup.log
색상 μ½”λ“œκ°€ ν™œμ„±ν™”λ˜μ–΄ 둜그 ν˜•μ‹μ΄ μ§€μ •λ©λ‹ˆλ‹€. λ˜ν•œ 여기에이 좜λ ₯을 μ œκ³΅ν•˜μ—¬ λ¬Έμ œκ°€ λ°œμƒν•œ 단계λ₯Ό 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

μˆ˜λ™μœΌλ‘œ μ‹€ν–‰ν•  λ•Œ μŠ€ν¬λ¦½νŠΈκ°€ 잘 μž‘λ™ν•©λ‹ˆλ‹€.

μ΄μƒν•œ.

크둠 μž‘μ—…μ„ μ‹€ν–‰ν•˜κ³  둜그 κ²°κ³Όλ₯Ό λΆ™μ—¬ λ„£μœΌμ‹­μ‹œμ˜€. /mnt/rpi/backup.log

NB : dietpi-backup μžλ™μœΌλ‘œ rsyncλ₯Ό 둜그 파일 /var/log/dietpi-backup.log 둜 좜λ ₯ν•©λ‹ˆλ‹€. 이것도 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ λ‚˜λŠ” G_USER_INPUT = 0 (μŠ€ν¬λ¦½νŠΈμ—μ„œ 이것을 μ œκ±°ν–ˆμŠ΅λ‹ˆλ‹€)없이 cron μž‘μ—…μ„ μ‹€ν–‰ν•˜λ €κ³ ν•©λ‹ˆλ‹€.

/mnt/rpi/backup.log의 λ°±μ—… 둜그 파일
[90m[[0m[33m......[90m][0m Checking for (elevated) root access[0m

dietpi-backup.logκ°€ λΉ„μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

cron이 μ‹œμž‘λœ 후에도 ν™œμ„± ν”„λ‘œμ„ΈμŠ€λ₯Ό 보지 λͺ»ν–ˆμŠ΅λ‹ˆλ‹€.

κ·Έλž˜μ„œ cron μ‹œμž‘ ν›„ νŒŒμΌμ—μ„œ 좜λ ₯을보기 μœ„ν•΄ λ‹€λ₯Έ 슀크립트λ₯Ό ν…ŒμŠ€νŠΈν•˜κΈ° μœ„ν•΄ μΆ”κ°€ν–ˆμŠ΅λ‹ˆλ‹€.

#!/bin/sh

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

κ·ΈλŸ¬λ‚˜μ΄ μŠ€ν¬λ¦½νŠΈλŠ” μ‹œμž‘λ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€. / mnt / rpi /에 "cronworks.log"파일이 μ—†μŠ΅λ‹ˆλ‹€.
λ‚΄ 슀크립트의 좜λ ₯ 파일 (backup.log)이 λ°±μ—… (첫 번째 κ²Œμ‹œλ¬Όμ—μ„œ)이 있기 λ•Œλ¬Έμ— μ΄μƒν•˜μ§€λ§Œμ΄ κ°„λ‹¨ν•œ

λΏ‘λΏ‘
μ’‹μŠ΅λ‹ˆλ‹€. 적어도 크둠에 였λ₯˜κ°€μžˆλŠ” 것 κ°™μŠ΅λ‹ˆλ‹€. cron은 run-parts /etc/cron.X/script λ₯Ό 톡해 슀크립트λ₯Ό μ‹œμž‘ν•˜λ©° λͺ‡ 가지 κ·œμΉ™μ΄ μžˆμŠ΅λ‹ˆλ‹€. 예λ₯Ό λ“€μ–΄ μŠ€ν¬λ¦½νŠΈλŠ” 루트 (AFAIK)κ°€ μ†Œμœ ν•΄μ•Όν•˜λ©° μŠ€ν¬λ¦½νŠΈμ— 파일 엔딩을 ν—ˆμš©ν•˜μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€. 즉, /etc/cron.daily/script.sh 은 κ±΄λ„ˆ λ›°κ³  이름은 λŒ€μ‹  /etc/cron.daily/script μ΄μ–΄μ•Όν•©λ‹ˆλ‹€.

λ˜ν•œ ν•„μš”ν•˜μ§€ μ•Šμ§€λ§Œ DietPi μŠ€ν¬λ¦½νŠΈμ™€ ν•¨κ»˜ μ‚¬μš©ν•  λ•ŒλŠ” #!/bin/bash λ₯Ό shebang으둜 μ‚¬μš©ν•˜μ‹­μ‹œμ˜€. κ·Έλ“€ μžμ‹ μ€ #!/bin/bash λ₯Ό 가지고 μžˆμ§€λ§Œ μ•ˆμ „μ„ μœ„ν•΄ cron 슀크립트 λ‚΄μ—μ„œλ„ μ‚¬μš©ν•˜μ‹­μ‹œμ˜€.

슀크립트의 이름은 항상 "backup"(. sh μ œμ™Έ)이고, μŠ€ν¬λ¦½νŠΈμ—μ„œλ„ "#! / bin / sh"λ₯Ό "#! / bin / bash"둜 λ³€κ²½ν•˜κ³ μ΄ μŠ€ν¬λ¦½νŠΈλŠ” λ£¨νŠΈκ°€ μ†Œμœ ν•©λ‹ˆλ‹€. λ§ˆμ§€λ§‰ κ²Œμ‹œλ¬Όμ˜ λ‚΄ ​​"ν…ŒμŠ€νŠΈ"μŠ€ν¬λ¦½νŠΈλ„ μ§€κΈˆ μž‘λ™ν•©λ‹ˆλ‹€.

λ‚˜λŠ” λͺ¨λ“  것을 μ‹œλ„ν–ˆμ§€λ§Œ μ—¬μ „νžˆ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. ν•œ μž‘μ—…μ„ 마친 ν›„ 둜그 파일둜 μΈμ‡„ν•˜λ„λ‘ 슀크립트λ₯Ό λ³€κ²½ν•˜κ³  μŠ€ν¬λ¦½νŠΈκ°€ μ‹œμž‘λ˜λŠ” 것을 λ³΄μ•˜μ§€λ§Œ tar, rclone λ“±κ³Ό 같은 λ‹€μŒ μž‘μ—…μœΌλ‘œ 이동할 수 μ—†κΈ° λ•Œλ¬Έμ— 백업이 μ‹œμž‘λ˜κ±°λ‚˜ μ™„λ£Œλ˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€ (dietpi-backup.logκ°€ λΉ„μ–΄ 있음). λ˜ν•œ cron을 μ‹€ν–‰ ν•œ ν›„ ν”„λ‘œμ„ΈμŠ€ / usr / sbin / cron -f μž‘λ™ν•˜κ³  -bash-μ •μƒμž…λ‹ˆκΉŒ?

슀크립트λ₯Ό μˆ˜λ™μœΌλ‘œ 싀행해도 μ—¬μ „νžˆ μž‘λ™ν•˜μ§€λ§Œ 백업이 μ™„λ£Œλ˜λ©΄ 확인 및 μ·¨μ†Œ (Whiptail ν™”λ©΄)λ₯Ό ν΄λ¦­ν•΄μ•Όν•˜λ©° κ·Έ ν›„ λ‹€μŒ μž‘μ—…μ΄ μ‹œμž‘λ©λ‹ˆλ‹€.

λ‚˜λŠ” cron에 μ˜ν•΄ μ‹œμž‘λœ μžλ™ 백업에 dietpi-backup을 μ‚¬μš©ν•˜λŠ” 것이 문제라고 μƒκ°ν•©λ‹ˆλ‹€. 6.9 λ²„μ „μ—μ„œ μž‘λ™ν–ˆμ§€λ§Œ dietpi-backup을 λ‹€μ‹œ μž‘μ„±ν•œ ν›„ μž‘λ™ν•˜μ§€ μ•Šμ•˜μŠ΅λ‹ˆλ‹€.

λΏ‘λΏ‘
λ‹€μ‹œ ν•œ 번 ν™•μΈν•˜μ„Έμš”.

  • μˆ˜λ™μœΌλ‘œ μ‹€ν–‰ν•˜λ©΄ /DietPi/dietpi/dietpi-backup 1 κ°€ μ„±κ³΅μ μœΌλ‘œ μ‹€ν–‰λ©λ‹ˆκΉŒ?
  • μ‹€ν–‰ν•˜λ©΄ G_USER_INPUTS=0 /DietPi/dietpi/dietpi-backup 1 도 였λ₯˜μ—†μ΄ μž‘λ™ν•˜λ©° λ‹€μŒκ³Ό 같이 ν‘œμ‹œλ©λ‹ˆλ‹€.
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

  • μŠ€ν¬λ¦½νŠΈμ—μ„œ μ •ν™•ν•œ λͺ…λ Ή ν–‰ μ‹€ν–‰
/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

λͺ¨λ‘ μ‹€ν–‰λ˜κ³  /mnt/rpi/backup.log μ—μ„œ λλ‚¬μŒμ„ λ³΄μ—¬μ€λ‹ˆλ‹€.

  • run-parts --test /etc/cron.daily 은 슀크립트λ₯Ό λ‚˜μ—΄ν•©λ‹ˆλ‹€ (맀일 인 경우, 그렇지 μ•ŠμœΌλ©΄ μ‘°μ •).
  • /usr/sbin/cron -f + -bash λŠ” #!/bin/bash 둜 인해 bash ν™˜κ²½μ„ μ‹œμž‘ν•˜λ―€λ‘œ 예라고 μ˜ˆμƒλ©λ‹ˆλ‹€.

μœ„μ˜ λͺ¨λ“  사항이 참이면 run-partsλ₯Ό μˆ˜λ™μœΌλ‘œ μ‹œμž‘ν•˜κ³  μ˜ˆμƒλŒ€λ‘œ μ‹€ν–‰λ˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.

  • 슀크립트λ₯Ό λ³„λ„μ˜ ν΄λ”λ‘œ 이동 / λ³΅μ‚¬ν•©λ‹ˆλ‹€. 예 : ~/testdir/backup
  • 그런 λ‹€μŒ run-parts ~/testdir

λ‚˜λŠ” 당신이 보여 μ£Όλ©΄μ„œ λͺ¨λ“  μ§ˆλ¬Έμ— λŒ€ν•΄ ν…ŒμŠ€νŠΈν–ˆμŠ΅λ‹ˆλ‹€. 예, μˆ˜λ™μœΌλ‘œ μ‹œμž‘ν•  λ•Œ λͺ¨λ“  것이 μž‘λ™ν•©λ‹ˆλ‹€.
run-parts λͺ…λ ΉμœΌλ‘œ ν…ŒμŠ€νŠΈν–ˆμ§€λ§Œ μˆ˜λ™μœΌλ‘œ μˆ˜ν–‰ν•˜λ©΄ μ—¬μ „νžˆ μž‘λ™ν•©λ‹ˆλ‹€.

run-parts --test /etc/cron.daily μ‚¬μš© ν›„ λ‚΄ μŠ€ν¬λ¦½νŠΈκ°€ λ‚˜μ—΄λ©λ‹ˆλ‹€.

G_USER_INPUTS = 0을 μΆ”κ°€ν•˜κ³  슀크립트λ₯Ό μˆ˜λ™μœΌλ‘œ μ‹œμž‘ν•˜λ©΄ 둜그 등에 λŒ€ν•œ μ •λ³΄κ°€μžˆλŠ” ν™”λ©΄ (whiptail)이 ν‘œμ‹œλ˜μ–΄μ•Όν•©λ‹ˆκΉŒ? λ‚˜λŠ” 항상 그것을보기 λ•Œλ¬Έμ—.

λΏ‘λΏ‘
G_USER_INPUTS=0 λŠ” 휩 ν…ŒμΌ 메뉴λ₯Ό ν‘œμ‹œν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€. μ •λ³΄λŠ” 터미널 λ©”μ‹œμ§€λ‘œλ§Œ ν‘œμ‹œλ˜κ³  μ§ˆλ¬Έμ€ "μ•„λ‹ˆμ˜€"둜 μ‘λ‹΅λ©λ‹ˆλ‹€ (μ—¬μœ  곡간 확인이 λΆ€μ‘±ν•œ 경우 μ·¨μ†Œ, 둜그보기 μ—†μŒ).

μŠ€ν¬λ¦½νŠΈμ— κ°•μ œλ‘œ μ μš©ν•˜λ €λ©΄ 슀크립트λ₯Ό μ‹€ν–‰ν•˜κΈ° 전에 λ‚΄ λ³΄λ‚΄μ•Όν•©λ‹ˆλ‹€.

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

λ˜λŠ” 더 μ‰½κ²Œ 직접 λ„˜κ²¨μ£Όμ„Έμš” : G_USER_INPUTS=0 /DietPi/dietpi/dietpi-backup 1

λ‚œ κ·Έλƒ₯ 당신이 μ‚¬μš©ν•˜λŠ” κ²ƒμœΌλ‘œ 인식 G_USER_INPUT=0 ν•˜μ§€ μ•Šκ³  μœ„μ˜ S 둜, 그것은 ν•„μš” G_USER_INPUTS=0 가진 S .

κ·ΈλŸ¬λ‚˜ λ³€μˆ˜λ₯Ό λ‚΄ 보내지 μ•ŠμœΌλ©΄ μŠ€ν¬λ¦½νŠΈκ°€ μ‚¬μš©μž μž…λ ₯을 ν•  수 μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό κ²°μ •ν•©λ‹ˆλ‹€. cron 및 예λ₯Ό λ“€μ–΄ μ‹œμŠ€ν…œ λ‹¨μœ„ μ‹€ν–‰ λ‚΄μ—μ„œ λͺ¨λ“  DietPi μŠ€ν¬λ¦½νŠΈλŠ” G_USER_INPUTS=0 μžλ™μœΌλ‘œ κ²°μ •ν•˜κ³  ν• λ‹Ήν•΄μ•Όν•©λ‹ˆλ‹€.
크둠 μž‘μ—… (λ˜λŠ” ν…ŒμŠ€νŠΈ μž‘μ—…)의 μ‹œμž‘μ— μΆ”κ°€ν•˜μ—¬ 방법이 μž‘λ™ν•˜λŠ”μ§€ 확인할 수 μžˆμŠ΅λ‹ˆλ‹€.
[[ -t 0 ]] && echo 'This environments allows user inputs' > /mnt/rpi/inputs.log || echo 'This environment does not allow user inputs' > /mnt/rpi/inputs.log
슀크립트λ₯Ό μˆ˜λ™μœΌλ‘œ μ‹€ν–‰ν•  λ•Œ μ‚¬μš©μž μž…λ ₯이 ν—ˆμš©λœλ‹€κ³  (whiptail 메뉴가 ν‘œμ‹œλ¨), cron을 톡해 μ‹œμž‘λ˜λ©΄ ν—ˆμš©λ˜μ§€ μ•Šμ•„μ•Όν•˜λ©°, whiptail 메뉴가 슀크립트λ₯Ό μ€‘λ‹¨μ‹œν‚€μ§€ μ•Šμ•„μ•Όν•©λ‹ˆλ‹€.

λ¨Όμ € G_USER_INPUTS=0 ν…ŒμŠ€νŠΈν•˜κ³  슀크립트λ₯Ό μˆ˜λ™μœΌλ‘œ μ‹œμž‘ν•˜λ©΄ λ‹€μŒμ„ κΈ°λ‘ν•©λ‹ˆλ‹€.
This environments allows user inputs
그렇지 μ•ŠμœΌλ©΄ cron으둜 μ‹œμž‘ν•˜λ©΄ :
This environment does not allow user inputs

λ‹€μŒμœΌλ‘œ 슀크립트λ₯Ό λ‹€μŒκ³Ό 같이 λ³€κ²½ν•©λ‹ˆλ‹€.

#!/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

dietpi-backup.logλŠ” μ—¬μ „νžˆ λΉ„μ–΄ μžˆμ§€λ§Œ backup.log :

cron이 μ‹œμž‘λ˜κ³  μžλ™μœΌλ‘œμ΄ 슀크립트λ₯Ό μ‹œμž‘ν•  λ•Œ :

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

슀크립트λ₯Ό μˆ˜λ™μœΌλ‘œ μ‹œμž‘ν–ˆμ„ λ•Œ :

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

그것은 맀우 μ„±κ°€μ‹  μΌμž…λ‹ˆλ‹€ ... λ‹€μŒμœΌλ‘œ, λ‚΄ μŠ€ν¬λ¦½νŠΈλŠ” λ‹€μŒκ³Ό κ°™μŠ΅λ‹ˆλ‹€.

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

이 μŠ€ν¬λ¦½νŠΈκ°€ cron에 μ˜ν•΄ μ‹œμž‘λ˜λ©΄ μ—¬μ „νžˆ μž‘λ™ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.

λ¬Έμ œλŠ” v6.10μ—μ„œ cron에 μ˜ν•΄ μ‹œμž‘λœ dietpi-backup에 μ—¬μ „νžˆ μžˆμŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 그것이 dietpi-backup μŠ€ν¬λ¦½νŠΈμ—μ„œ v6.10μ—μ„œ λ³€κ²½ ν•œ 문제라고 μƒκ°ν•©λ‹ˆλ‹€.

dietpi-backup.logκ°€ μ—¬μ „νžˆ λΉ„μ–΄ μžˆμŠ΅λ‹ˆλ‹€.

λΏ‘λΏ‘
κ·€ν•˜μ˜ ν…ŒμŠ€νŠΈ λ…Έλ ₯에 κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€.
λ‚˜λŠ” 우리의 λ³€ν™”λ₯Ό κ²ͺ을 κ²ƒμž…λ‹ˆλ‹€. μ§€κΈˆκΉŒμ§€ λ‹¨μ„œκ°€ μ—†μŠ΅λ‹ˆλ‹€. 적어도 ν…ŒμŠ€νŠΈμ— λ”°λ₯΄λ©΄ μŠ€ν¬λ¦½νŠΈλŠ” μ‹€μ œλ‘œ μ€‘λ‹¨λ˜μ§€ μ•Šμ§€λ§Œ (whiptail / G_USER_INPUTSλŠ” λ¬Έμ œκ°€ μ•„λ‹™λ‹ˆλ‹€) μ‹€νŒ¨ν•©λ‹ˆλ‹€.

자체 ν…ŒμŠ€νŠΈλ₯Ό μˆ˜ν–‰ν–ˆμŠ΅λ‹ˆλ‹€.

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

루트 μ‚¬μš©μž 확인을 주석 처리 ν•œ ν›„ dietpi-backup μ—μ„œ cron을 톡해 μ‹€ν–‰ν•˜λ©΄ λ‹€μŒκ³Ό 같은 κ²°κ³Όκ°€ λ°œμƒν•©λ‹ˆλ‹€.
[FAILED] RootFS is currently Read Only, unable to continue.
κ·ΈλŸ¬λ‚˜:

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

λΏ‘λΏ‘

tput 문제 :
tput: No value for $TERM and no -T specified

  • ν₯λ―Έλ‘­κ²Œλ„ v6.9μ—μ„œλ„ ν˜ΈμΆœν–ˆμŠ΅λ‹ˆλ‹€ πŸ€”.

μˆ˜μ • : https://github.com/Fourdee/DietPi/commit/82ac7b32d32dca9db4fdb824c7ead80174844090

λ˜ν•œμ΄ νŒ¨μΉ˜λŠ” 또 λ‹€λ₯Έ 문제λ₯Ό ν•΄κ²°ν•©λ‹ˆλ‹€. cron이 맀일 λ˜λŠ” λ§€μ‹œκ°„ μ‹€ν–‰ν•˜λŠ” "run_ntpd 1"은 μ‹œκ°„μ„ λ™κΈ°ν™”ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€ (/ var / lib / systemd / clock의 νƒ€μž„ μŠ€νƒ¬ν”„λŠ” λ³€κ²½λ˜μ§€ μ•ŠμŒ).

λΏ‘ 빡뀨
Jep λ‹Ήμ‹  말이 λ§žμ•„μš”.
μˆ˜μ • 사항을 μ μš©ν•˜κΈ° μœ„ν•΄ μˆ˜λ™ 슀크립트 νŽΈμ§‘μ„ ν”Όν•˜λ €λ©΄ wget https://raw.githubusercontent.com/Fourdee/DietPi/82ac7b32d32dca9db4fdb824c7ead80174844090/dietpi/func/dietpi-globals -O /DietPi/dietpi/func/dietpi-globals 같은 λ¬Έμ œκ°€μžˆλŠ” λͺ¨λ“  μ‚¬μš©μžκ°€ μˆ˜ν–‰ν•΄μ•Όν•©λ‹ˆλ‹€.

μš°λ¦¬κ°€ 곡개 ν•œ 이슈 쀑 μΌλΆ€λŠ” 이와 관련이 μžˆλ‹€κ³  μƒκ°ν•©λ‹ˆλ‹€. cron.hourly λ‚΄μ˜ run_ntpd κ°€ μ‹€νŒ¨ν•˜λ©΄ λ‚˜μ€‘μ— dietpi-logclear 도 ν˜ΈμΆœλ˜μ§€ μ•Šμ•„ / var / logκ°€ μ±„μ›Œμ§‘λ‹ˆλ‹€. https://github.com/Fourdee/DietPi/issues/ 1920 λ…„

cron μž‘μ—… λ‚΄μ—μ„œ 이미 tput μ‚¬μš©ν–ˆκΈ° λ•Œλ¬Έμ—μ΄ λ¬Έμ œκ°€ v6.10 +μ—μ„œ 처음 λ‚˜νƒ€λ‚œ μ΄μœ κ°€ κΆκΈˆν•©λ‹ˆλ‹€.
λˆ„κ΅°κ°€κ°€ 문제λ₯Ό μΌμœΌν‚¨ λ³€ν™”λ₯Ό 찾을 수 μžˆμœΌλ―€λ‘œ μ•žμœΌλ‘œ 더 잘 μ²˜λ¦¬ν•˜λŠ” 방법을 μ•Œκ³  μžˆμŠ΅λ‹ˆλ‹€.

  • μ• λ‹ˆλ©”μ΄μ…˜ ν”„λ‘œμ„ΈμŠ€ μ•Œλ¦Ό v6.9 호좜 : https://github.com/Fourdee/DietPi/blob/7b682286e72ef339518d110892a54e7ce405b648/dietpi/func/dietpi-globals#L301 -L315
  • v6.10μ—μ„œ λ³€κ²½λœ 사항 : https://github.com/Fourdee/DietPi/pull/1867/files
  • tput cuu 및 tput cols λŠ” 두 경우 λͺ¨λ‘ 호좜되며, 처리 μ• λ‹ˆλ©”μ΄μ…˜μ„ μ§€μšΈ λ•Œ λ‹€λ₯Έ λͺ¨λ“  DietPi μ•Œλ¦Όμ—μ„œ tput ed κ°€ ν˜ΈμΆœλ©λ‹ˆλ‹€.
  • 문제λ₯Ό μΌμœΌν‚¨ μ•Œλ¦Όμ˜ λ³€κ²½ 사항이 μ•„λ‹ˆλΌ νŠΉμ • μ—…λ°μ΄νŠΈ ν›„ 크둠 처리 였λ₯˜ (λ˜λŠ” tput)κ°€ λ‹€λ₯΄κ²Œ μ²˜λ¦¬λ˜μ—ˆμ„ 수 μžˆμŠ΅λ‹ˆλ‹€.

이에 λŒ€ν•œ μΆ”κ°€ ν…ŒμŠ€νŠΈ :

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 이 dumb
  • tput λŠ” 비둝 μœ νš¨ν•˜μ§€ μ•Šλ”λΌλ„ λ³€μˆ˜μ— λŒ€ν•œ 값이 μ—†λ‹€κ³  μ£Όμž₯ν•©λ‹ˆλ‹€.
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
  • 잘λͺ»λœ $ TERM은 였λ₯˜λ‘œ 이어지지 μ•ŠμœΌλ―€λ‘œ (단지 tput 좜λ ₯이 μ—†μŒ) cron tput 였λ₯˜λŠ” -T λˆ„λ½κ³Ό κ΄€λ ¨μ΄μžˆλŠ” κ²ƒμœΌλ‘œ 보이며 [[ -t 0 ]] κ²°κ³ΌλŠ” falseμž…λ‹ˆλ‹€. μ•„λ§ˆλ„ 이것은 이전에 λ‹€λ₯΄κ²Œ ν–‰λ™ν–ˆμ„ μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€. 2018-02-15에 λ§ˆμ§€λ§‰ ncurses-bin APT μ—…λ°μ΄νŠΈ : http://ftp.de.debian.org/debian/pool/main/n/ncurses/

  • λΉ„λŒ€ν™” ν˜• / 잘λͺ»λœ 터미널에 이미 λ¬Έμ œκ°€ μžˆμ—ˆμœΌλ―€λ‘œ 이제 λΉ„μ–΄μžˆλŠ” $ TERM λ˜λŠ” ' unknown 'κ°€ 발견되면 dietpi- * 슀크립트λ₯Ό μ’…λ£Œν•©λ‹ˆλ‹€. https://github.com/Fourdee/DietPi/blob/ ν…ŒμŠ€νŠΈ / dietpi / func / dietpi-globals # L30 -L35

  • λΉ„λŒ€ν™” ν˜• μ‹€ν–‰ (λ˜ν•œ μ—°κ²°λœ 터미널없이)을 ν—ˆμš©ν•˜κ³  싢을 수 있기 λ•Œλ¬Έμ— μž…μ°°μ΄ μΌμΉ˜ν•˜μ§€ μ•Šμ§€λ§Œ μœ νš¨ν•œ 터미널이 ν•„μš”ν•œ λ‹€λ₯Έ λͺ…령을 각각 tput ν˜ΈμΆœν•˜λŠ” λ°μ£Όμ˜ν•΄μ•Όν•©λ‹ˆλ‹€.

v6.9μ—μ„œ ν…ŒμŠ€νŠΈ :

root<strong i="6">@DietPi</strong>:/tmp# cat cron.test
dumb
tput: No value for $TERM and no -T specified
finish
  • 였λ₯˜κ°€ ν‘œμ‹œλ˜μ§€λ§Œ μŠ€ν¬λ¦½νŠΈκ°€ λ‹€μ‹œ μ‹œμž‘λ©λ‹ˆλ‹€.

APT μ—…λ°μ΄νŠΈμ—λŠ” cron 및 / λ˜λŠ” ncursesκ°€ ν¬ν•¨λ˜μ–΄ μžˆμ§€ μ•ŠμŠ΅λ‹ˆλ‹€ (ν…ŒμŠ€νŠΈ 된 κ΄€λ ¨μ—†λŠ” νŒ¨ν‚€μ§€μ— μ˜ν•΄ κ°μ†Œλ¨).

  • apt-get dist-upgrade 및 μž¬λΆ€νŒ… 후에도 cron은 tput 였λ₯˜ ν›„ 싀행을 μ€‘μ§€ν•˜μ§€ μ•ŠμŠ΅λ‹ˆλ‹€.
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 to v6.11 master : 맀우 μ΄μƒν•˜μ§€λ§Œ μ—¬μ „νžˆ λ¬Έμ œκ°€ μ—†μŠ΅λ‹ˆλ‹€ ...
root<strong i="22">@DietPi</strong>:/tmp# cat cron.test
dumb
tput: No value for $TERM and no -T specified
finish
  • dietpi-backup μ‹€ν–‰ μΆ”κ°€ :
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
  • μŠ€ν¬λ¦½νŠΈλŠ” μ‹€νŒ¨ν•˜μ§€λ§Œ 크둠 μž‘μ—…μ€ κ³„μ†λ©λ‹ˆλ‹€. 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

-μ’‹μ•„, 그것은 μ „μ—­ λ³€κ²½κ³Ό 관련이 μžˆμ§€λ§Œ tput κ°€ μ‹€νŒ¨ν•˜κ³  μ‹€νŒ¨ν–ˆκΈ° λ•Œλ¬Έμ— μŠ€ν¬λ¦½νŠΈκ°€ μ§€κΈˆ μ’…λ£Œλ˜κ³  v6.9μ—μ„œ μ’…λ£Œλ˜μ§€ μ•Šμ€ μ΄μœ λŠ” λ¬΄μ—‡μž…λ‹ˆκΉŒ?

확인 된 κ΄€λ ¨ λ³€κ²½ : https://github.com/Fourdee/DietPi/blob/master/dietpi/func/dietpi-globals#L266
local lines=$(( (${#input_string}+6)/$(tput cols) )) 은 전체 슀크립트 μ’…λ£Œλ‘œ μ—°κ²°λ˜μ§€λ§Œ (이전)

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

였λ₯˜λ₯Ό ν‘œμ‹œν–ˆμ§€λ§Œ μŠ€ν¬λ¦½νŠΈκ°€ 계속 μ§„ν–‰λ˜λ„λ‘ ν—ˆμš©ν–ˆμŠ΅λ‹ˆλ‹€ (μœ„ μ°Έμ‘°).

https://github.com/Fourdee/DietPi/commit/82ac7b32d32dca9db4fdb824c7ead80174844090 μˆ˜μ •μ΄ μž‘λ™ν•˜λ©° κ°€μž₯ κΉ¨λ—ν•œ μ†”λ£¨μ…˜μ΄κΈ°λ„ν•©λ‹ˆλ‹€. tput λŠ” λΉ„λŒ€ν™” ν˜• μ…Έ λ‚΄μ—μ„œ μ™„μ „νžˆ κ±΄λ„ˆ λ›°κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ 였λ₯˜λ₯Ό λ°©μ§€ν•˜λ €λ©΄ λ¨Όμ € λ³€μˆ˜λ₯Ό μ„ μ–Έ ν•œ λ‹€μŒ μ‚°μˆ  ν™˜κ²½ λ‚΄μ—μ„œ λ‚˜μ€‘μ— 값을 ν• λ‹Ήν•˜λŠ” 이전 λ°©λ²•μœΌλ‘œ 되돌렀 μ•Όν•©λ‹ˆλ‹€. Commit done https://github.com/Fourdee/DietPi/commit/0f18aa4dc0af8ab910a0173dce8849d5b53c30b0

νŠΈμœ— λ‹΄μ•„ κ°€κΈ°
μž…μ°°μ„ μ •λ¦¬ν•˜κΈ° μœ„ν•΄ μƒˆ 문제λ₯Ό μ—΄μ—ˆμŠ΅λ‹ˆλ‹€. 거기에 μ–ΈκΈ‰ 된 μˆ˜μ • 사항을 μ μš©ν•˜κ³  λͺ¨λ“  λ¬Έμ œκ°€ ν•΄κ²°λ˜λ©΄ λ‹€μ‹œλ³΄κ³  ν•˜μ‹­μ‹œμ˜€ :

λ‚˜λŠ” μƒˆλ‘œμš΄ 문제λ₯Ό μœ„ν•΄μ΄ 문제λ₯Ό μ’…κ²° ν•  κ²ƒμž…λ‹ˆλ‹€.

λ‚΄ v6.13에 μ„±κ³΅μ μœΌλ‘œ ssh ν•  수 μžˆμ—ˆμ§€λ§Œ 곧 쀑단 될 κ²ƒμž…λ‹ˆλ‹€.

"tput cols"λͺ…령이 tput : unknown terminal "rxvt-256color"λ₯Ό 좜λ ₯ν•˜μ—¬ dietpi-login의 328 행에 빈 값이 ν‘œμ‹œλ˜μ–΄ 초기 λΆ€νŒ…μ‹œ λ°μ΄ν„°λ² μ΄μŠ€λ₯Ό μ„±κ³΅μ μœΌλ‘œ 읽은 ν›„ μ˜μ›νžˆ μ€‘λ‹¨λ©λ‹ˆλ‹€.

보기 ν‰ν•œ ν•΄ν‚Ή 인 TERM = xterm λ‚΄λ³΄λ‚΄κΈ°λŠ” 둜그인 슀크립트λ₯Ό μˆ˜μ • ν•œ κ²ƒμ²˜λŸΌ λ³΄μ˜€μœΌλ©° 이제 μ„€μΉ˜λ₯Ό μ‹œμž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.

이것이 잘λͺ»λœ μ„Ήμ…˜μ΄λΌλ©΄ 인내심을 κ°€μ§€μ‹­μ‹œμ˜€. github 문제λ₯Ό μ‚¬μš©ν•˜λŠ” 방법을 λͺ¨λ₯΄κ² μŠ΅λ‹ˆλ‹€. λ‚˜λŠ” 였λ₯˜μ— λŒ€ν•΄ μ“Έλͺ¨μ—†λŠ” 인터넷 검색을 ν•œ 후이 μŠ€λ ˆλ“œλ₯Ό λ°œκ²¬ν–ˆμŠ΅λ‹ˆλ‹€. μ΄λ™ν•˜λ©΄ λˆ„κ΅°κ°€ λ‚΄ 같은 λ¬Έμ œκ°€μžˆλŠ” 경우 rxvt-256color 였λ₯˜μ— λŒ€ν•œ λ‚˜λ¨Έμ§€κ°€ 남을 수 μžˆμŠ΅λ‹ˆλ‹€.

μΉœμ• ν•˜λŠ”!

ν—‰

μ•ˆλ…•ν•˜μ„Έμš”,

λ³΄κ³ μ„œμ™€ μ†”λ£¨μ…˜μ— κ°μ‚¬λ“œλ¦½λ‹ˆλ‹€ πŸ‘

μ–΄λ–€ SSH ν΄λΌμ΄μ–ΈνŠΈλ₯Ό μ‹€ν–‰ν•˜κ³  μžˆμŠ΅λ‹ˆκΉŒ?

@Fourdee
λ‚˜λŠ” 이것에 λŒ€ν•΄ λ³„λ„μ˜ 문제λ₯Ό μ—΄μ—ˆμŠ΅λ‹ˆλ‹€. 문제 확인 : https://github.com/Fourdee/DietPi/issues/2034

ν—‰
SSH에 둜그인 ν•œ ν›„ μ‹œλ„ν•΄λ³΄μ‹­μ‹œμ˜€. export TERM='xterm-256color' € : μ•„, 이것은 기본적으둜 이미 μ•Œκ²Œ 된 κ²ƒμž…λ‹ˆλ‹€ πŸ˜„.
이것이 μž‘λ™ν•˜λ©΄ λ‹€μŒκ³Ό 같은 λ‚΄μš©μ΄ 포함 된 슀크립트λ₯Ό /etc/profile.d/ μΆ”κ°€ ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
[[ $SSH_TTY ]] && [[ $TERM =~ 256 ]] && export TERM='xterm-256color'

  • 즉, 이것이 SSH 연결이고 SSH ν΄λΌμ΄μ–ΈνŠΈκ°€ 256 λΉ„νŠΈ 컬러 터미널을 톡과 ν•œ 경우 DietPiμ—μ„œ μ§€μ›ν•˜λŠ” xterm-256color 둜 μ‘°μ •ν•©λ‹ˆλ‹€.

λ‹€λ₯Έ 방법은 더 λ§Žμ€ 터미널 μ •μ˜κ°€ 포함 된 νŒ¨ν‚€μ§€λ₯Ό μ„€μΉ˜ν•˜λŠ” κ²ƒμž…λ‹ˆλ‹€. G_AGI ncurses-term

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

@MichaIng μš°μ—°νžˆ 도와 μ£Όμ…”μ„œ κ°μ‚¬ν•©λ‹ˆλ‹€!

λ‚΄κ°€ λ‚˜μœ μ‹œμŠ€ν…œ κ΄€λ¦¬μžμ΄κ³  Tom Ryder의이 기사λ₯Ό 따라 κ°€λ©΄μ„œ 터미널 "μ„ μ–Έ"ꡬ성이 μƒλ‹Ήνžˆ 잘λͺ» κ΅¬μ„±λ˜μ—ˆμŒμ„ μ•Œμ•˜μŠ΅λ‹ˆλ‹€.

κ²°κ΅­ λ‚˜λ₯Ό μœ„ν•΄ 문제λ₯Ό ν•΄κ²° ν•œ 것은

  • /root/.bashrc에 μ˜¬λ°”λ₯Έ $ TERM 내보내기
  • pi의 /root/.terminfo ν΄λ”μ—μžˆλŠ” λ‚΄ μ•„μΉ˜ μ„€μΉ˜μ—μ„œ μ˜¬λ°”λ₯Έ terminfo ν•­λͺ© 볡사

scpκ°€ μ„€μΉ˜λ˜μ§€ μ•Šμ•˜κΈ° λ•Œλ¬Έμ— (dropbear μ„œλ²„μ™€ ν•¨κ»˜ μ„€μΉ˜ν•˜λŠ” 것을 κ³ λ €ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?) λ‚΄ pi에 terminfo νŒŒμΌμ„ scp ν•  수 μ—†μ–΄μ„œ λ‚΄κ°€ μ†Œμœ  ν•œ μ„œλ²„μ— μ—…λ‘œλ“œν•˜κ³  piμ—μ„œ κ°€μ Έ μ™”μŠ΅λ‹ˆλ‹€.

도와 λ“œλ¦΄ μˆ˜μžˆμ–΄μ„œ 기쁘고, μ‘μ›ν•˜κ³ , 엉망진창에 λŒ€ν•΄ λ‹€μ‹œ ν•œ 번 μ£„μ†‘ν•©λ‹ˆλ‹€.

ν—‰
Jep, /root/.bashrc λ‚΄μ—μ„œ $ TERM을 μ„€μ •ν•˜λŠ” 것도 μž‘λ™ν•©λ‹ˆλ‹€. /etc/profile[.d/]에 μΆ”κ°€ν•˜λ©΄ λͺ¨λ“  μ‚¬μš©μžκ°€ μ‹œμŠ€ν…œ μ „μ²΄μ—μ„œ 문제λ₯Ό ν•΄κ²°ν•  수 μžˆμŠ΅λ‹ˆλ‹€. μ΄λŠ” μš°λ¦¬κ°€ DietPi와 ν•¨κ»˜ μ‚¬μš©ν•  μ†”λ£¨μ…˜μž…λ‹ˆλ‹€.

당신이 링크 ν•œ κΈ°μ‚¬λŠ” λͺ¨λ“  것과 κ°€λŠ₯성을 μ•„μ£Ό 잘 μ„€λͺ…ν•˜λŠ” κ½€ ν›Œλ₯­ν•©λ‹ˆλ‹€ πŸ‘. λ”°λΌμ„œ 기본적으둜 ν•„μš”ν•œ 터미널 μœ ν˜•μ„ μˆ˜λ™μœΌλ‘œ μ„€μΉ˜ν–ˆμŠ΅λ‹ˆλ‹€. λ˜ν•œμ΄ κΈ°μ‚¬μ—μ„œλŠ” λ‹€μ–‘ν•œ 터미널 μ •μ˜λ₯Ό μ„€μΉ˜ν•˜κΈ°μœ„ν•œ μ˜΅μ…˜μœΌλ‘œ ncurses-term νŒ¨ν‚€μ§€λ₯Ό μ–ΈκΈ‰ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ DietPiλ₯Ό μŠ¬λ¦Όν•˜κ²Œ μœ μ§€ν•˜κΈ° μœ„ν•΄ λ“œλ¬Όκ²Œμ΄ νŒ¨ν‚€μ§€λ₯Ό 사전 μ„€μΉ˜ν•˜λŠ” 것은 그리 쒋지 μ•ŠμŠ΅λ‹ˆλ‹€. λŒ€μ‹  bashrc / profile μ†”λ£¨μ…˜μ„ μ‚¬μš©ν•˜λŠ” 것이 μ’‹μŠ΅λ‹ˆλ‹€. SSH λ‘œκ·ΈμΈμ— μˆ˜μ • 사항을 μ μš©ν•˜κΈ° 전에 κ°„λ‹¨νžˆ 터미널 지원을 ν™•μΈν•˜λŠ” 것도 κ°€λŠ₯ν•©λ‹ˆλ‹€.

PuTTY ν΄λΌμ΄μ–ΈνŠΈ ν…ŒμŠ€νŠΈ : PuTTY> Connection > Data > Terminal-type string

SCP μ„€μΉ˜ 정보 : νŒŒμΌμ„ μ „μ†‘ν•˜κΈ°μœ„ν•œ FTP, SFTP λ˜λŠ” λ„€νŠΈμ›Œν¬ λ“œλΌμ΄λΈŒ NFS, SMB와 같은 μ—¬λŸ¬ λ‹€λ₯Έ 파일 전솑 ν”„λ‘œν† μ½œμ΄ μžˆμŠ΅λ‹ˆλ‹€. 사전 μ„€μΉ˜λŠ”ν•˜μ§€ μ•Šμ§€λ§Œ ν΄λΌμ΄μ–ΈνŠΈμ—μ„œ μ„œλ²„λ‘œ νŒŒμΌμ„ κ°€μ Έ μ˜€λŠ” 방법은 μ‚¬μš©μžμ—κ²Œ λ§‘κΈ°μ‹­μ‹œμ˜€. USB μŠ€ν‹±, μ™Έμž₯ λ“œλΌμ΄λΈŒλ„ λ¬Όλ‘  κ°€λŠ₯ν•˜λ©°, 만일의 경우 SSH λ‹¨μžμ— κ°„λ‹¨νžˆ λ³΅μ‚¬ν•˜μ—¬ λΆ™μ—¬ 넣기도 κ°€λŠ₯ν•©λ‹ˆλ‹€. κ·ΈλŸ¬λ‚˜ μ–΄μ¨Œλ“  일반적인 ν•΄κ²°μ±…μœΌλ‘œ μœ„μ—μ„œ μ–ΈκΈ‰ ν•œ 두 가지 방법 쀑 ν•˜λ‚˜λ₯Ό μ‚¬μš©ν•©λ‹ˆλ‹€.

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰