Interpretacja znaków sterujących terminalem CLI w pliku

0

Wykonuję z CRON pewną sekwencję komend w BASH.
Jedną z nich jest APK UPDATE/UPGRADE. Wynik zrzucam do pliku. Następnie plik ten wysyłam mailem jako jego treść.
Oczywiście tak powstały plik zawiera znaki sterujące które np CAT nie interpretuje. Stąd w treści maila wysyłane jest np taki fragment:

Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [2583 kB]
[33m
0% [4 Packages store 0 B] [5 Packages 2409 B/2583 kB 0%][0m[33m
 
0% [5 Packages 31.2 kB/2583 kB 1%][0m[33m
0% [5 Packages 1416 kB/2583 kB 55%][0m[33m
0% [5 Packages 2583 kB/2583 kB 100%][0m[33m
 
0% [Working][0m[33m
0% [5 Packages store 0 B][0m[33m
 
0% [Working][0m[33m
0% [Working][0m[33m
0% [Working][0m[33m
0% [Working][0m[33m
0% [Working] 648 kB/s 0s[0m[33m
0% [Working] 648 kB/s 0s[0m[33m
0% [Working] 648 kB/s 0s[0m[33m
0% [Working] 648 kB/s 0s[0m[33m
0% [Working] 648 kB/s 0s[0m[33m
0% [Working] 648 kB/s 0s[0m[33m
0% [Working] 648 kB/s 0s[0m[33m
0% [Working] 648 kB/s 0s[0m[33m

Podczas gdy ten sam CAT "puszczony" na konsoli daje wynik (ten sam fragment)

Get:5 http://archive.ubuntu.com/ubuntu focal-updates/main amd64 Packages [2583 kB]

Czy jest jakaś możliwość przetworzenia pliku który wysyłany jest jako treść maila tak aby był pokazywany tak jak przy użyciu CAT z konsoli ASCII ? Czyli taki np CAT pliku w inny plik z interpretacją funkcji sterujących wyświetlaniem terminala? printf? screen?

0

Musiałbyś przepuścić przez coś co zamieni znaki kontrolne na tagi HTML (zakładając, że chcesz zachować kolorowanie). Alternatywnie możesz wewnątrz skryptu ustawić NO_COLOR=1 i w ten sposób wyłączyć kolorowanie w APT.

0
hauleth napisał(a):

Musiałbyś przepuścić przez coś co zamieni znaki kontrolne na tagi HTML (zakładając, że chcesz zachować kolorowanie). Alternatywnie możesz wewnątrz skryptu ustawić NO_COLOR=1 i w ten sposób wyłączyć kolorowanie w APT.

Nie, nie zależy mi na żadnych kolorach czy nawet polskich znakach (przeboleję jakby co). To mail informacyjny.

0
Adamek Adam napisał(a):

a taki koncept ?

wget --output-file=log.txt 
cat log.txt 

Nie za bardzo...

[maciek@Piotr TMP]$ wget --output-file=./b.txt
wget: brakujący URL
Składnia: wget [OPCJE]... [URL]...

Polecenie `wget --help' wyświetli więcej opcji.

0

Nic mądrzejszego nie wymyśliłem. Mało eleganckie ale eliminuje to co trzeba

#!/bin/bash
plik_tmp="/dev/shm/backup.tmp"
plik="/dev/shm/backup.txt"

echo "Subject: Backup start `date`" > $plik_tmp
#
# Tutaj sekwencja komend
#
cat $plik_tmp | grep -v $'\r\r' | grep -v "%" > $plik

ssmtp user@domain < $plik

1 użytkowników online, w tym zalogowanych: 0, gości: 1