# [Ustawienia] - skrypt do zapisywania konfigow

## soban_

Ostatnio wpadlem na pomysl, aby zapisywac konfigi za pomoca "| curl -F "sprunge=<-" http://sprunge.us", jesli ktos chce przetestowac to:

 *Quote:*   

> root@SoBaN-PC /home/soban/jakis # ./backup.sh
> 
> >>> Jobs: 0 of 0 complete                           Load avg: 0.49, 0.28, 0.20
> 
> SYSTEM:
> ...

 

Od wklejania ciaglego emerge --info i wypytywania sie o konfiguracje, tak mamy wszystko jak na tacy.

To jest zawartosc pliku:

 *Quote:*   

> #!/bin/bash
> 
> #backup gentoo  by SoBaN ( soban@soban.pl )
> 
> # send file
> ...

  Jesli komus przychodzi do glowy, jaki konfig mozna dodac - ewentualnie co poprawic w skrypcie to prosze pisac  :Smile: 

[ot]Wszystkim bardzo dziekuje za pomoc i za pomysly.[/ot]

Mam nadzieje ze sie komus przyda.

----------

## mziab

Dlaczego nie wydzieliłeś powtarzającego się kodu do funkcji? Byłoby dużo zwięźlej z tym samym efektem. Poza tym, nie musisz używać pliku tymczasowego. Wystarczy użyć potoku. Te dwie rzeczy znacznie uprościłyby skrypt  :Wink: 

----------

## soban_

OK, poprawilem  :Smile:  jeszcze jakies sugestie lub konfigi (lspci bym dodal tez, ale wymaga uprawnien roota) do dodania? Zastanawiam sie tez, czy nie wyslac tego wszystkiego co zwraca skrypt - tak aby sprawa sie wlasciwie konczyla na dostaniu jednego linka. Ewentualnie zastanawiam sie nad zebraniem informacji o komputerze i wstawieniem tego do jednego pliku ktory poleci na stronke?

----------

## Kurt Steiner

Moved from Polskie forum (Polish) to Polish OTW.

----------

## lazy_bum

 *soban_ wrote:*   

> lspci bym dodal tez, ale wymaga uprawnien roota

 

o_O A w jakim to systemie wymaga roota?

```
wloczykij ~ (: whoami

lazy_bum

wloczykij ~ (: lspci

00:00.0 Host bridge: VIA Technologies, Inc. VT8623 [Apollo CLE266]

00:01.0 PCI bridge: VIA Technologies, Inc. VT8633 [Apollo Pro266 AGP]

00:10.0 USB Controller: VIA Technologies, Inc. VT82xxxxx UHCI USB 1.1 Controller (rev 80)

(…)
```

Czyżbyś nie miał /usr/sbin w PATH?

----------

## soban_

Tak, chyba masz racje (sprawdze to dokladnie jak bede w drugim domu, czyli w piatek). Jednak moze sie znowu zdarzyc taka sytulacja ze ktos nie moze wykonac lspci (chcialbym tutaj zeby nie wysylal na strone zawartosci blednego polecenia) - szczerze to nie wiem jak zrobic taki warunek. - Tutaj wlasnie tez mam pytanko, czy da sie sprawdzic bledne polecenie? (tak zeby zrobic warunek iz nie wysle "bash: cos: nie znaleziono polecenia" - tutaj trzeba wziasc to pod uwage, ze moze to byc rozna wersja jezykowa)

Druga kwestia ktora zauwazylem, to grep -vE '^(#|$)' $1 | wgetpaste moze np zwrocic pusty strumien - gdy mamy np same komentarze w pliku. Wiec przy wysylaniu pustego pliku wgetpastem odrazu zwisa (tutaj chyba trzeba zrobic warunek i sprawdzic czy strumien nie jest pusty). - Ten problem juz sie sam naprawil, wgetpast w najnowszej wersji nie pozwala wysylac pustych plikow.

//edit: 2011-01-10

Ostantio troche zmodyfikowalem skrypt jak widac wyzej, jednak jest jeden problem dosyc denerwujacy. http://paste.pocoo.org/show/318093/ - emerge --info zamiast pokazac normalnie, tak zeby dalo sie przeczytac wszystko na jednej stronie to robi on dluga linijke - przez co trzeba przewijac w prawo. Czy ma ktos pomysl jak to poprawic, tak zeby wysylal informacje dokladnie tak jak przedstawia je na monitorze (ewentualnie ograniczone do danej ilosci znakow w prawo)?

----------

## Aktyn

 *soban_ wrote:*   

> Czy ma ktos pomysl jak to poprawic, tak zeby ...(ewentualnie ograniczone do danej ilosci znakow w prawo)?

 

Teoretycznie jeśli nie da się tego zrobić po stronie serwera, (opcja zawijanie wierszy) albo w samym programie, a nie ma żadnych programów standardowo w linuksie (nie wiem) to moge napisać mały program do formatowania. Ale ktoś musi go mieć w systemie, i w portage, a ja ebuilda raczej nie napisze.

Ale moim zdaniem powinno się dodać (czasem) jeszcze np opcje jaki plik jest cytowany (lub polecenie), bo z tego: http://paste.pocoo.org/show/318123/ nic nie wiadomo. Pierwsze linijki mogłyby to zawierać w formie

```
file: plik

--- zawartosc ---:

blebleble
```

```
command: polecenie

--- zawartosc ---:

blebleble
```

Tylko wtedy straci sie coś co się nazywa numerowanie linii, choć biorąc pod uwage że tekst i tak jest formatowany, więc nie powinien to być problem. Ale polecenia uname -a mogą brzydko wyglądać.

----------

## SlashBeast

Fajny spamer wklejarek. Dorzuc 'file /dev/urandom`

A tak na serio, to dlaczego wszystkich outputow nie dajesz w jednego wkleja?

----------

## Aktyn

A czy kod wklejany jest dożywotni?

Wiele plików to masa klikania, jeden plik trzeba przeszukiwać. Tak źle i tak niedobrze.  :Wink: 

Ale można szlaczki dorobić. Albo nazwe dać w ramke.  :Smile: 

----------

## soban_

 *SlashBeast wrote:*   

> Fajny spamer wklejarek. Dorzuc 'file /dev/urandom`

 Wystarczy zapetlic skrypt - chociaz nie wiem czy wgetpast wtedy sie nie zbuntuje albo serwer. d-:

 *Aktyn wrote:*   

> Ale można szlaczki dorobić. Albo nazwe dać w ramke. :)

  To jest chlopaki niezla mysl, tylko jak zrobic to ciecie? Ja jestem pewny ze to da sie zrobic, mozna wszystko dac do jednej zmiennej i "| cut" potraktowac jednak jak rozsadnie to zrobic to nie wiem + sprawdzanie polecen - ktore zwracaja blad, to sa te 2 problemy. Bo to z obramowaniem to w sumie nie problem, mozna wtedy nawet numeracje wprowadzic wlasna... - tyle ze bedzie zawsze ten problem z wklejaniem gotowych konfigow z backupu - no chyba ze sie zrobi skrypt ktory sciaga plik i robi z niego gotowe pliki (takie jak powinny byc) ale to juz druga para kaloszy - tez do zrobienia.

----------

## Aktyn

Można to na wiele sposobów zrobić, albo zapis do pliku np. G_DIAG danych testowych poprzez program formatujący, i wysłanie całego pliku.

W razie braku pliku, komunikat, o braku pliku.

Moge też napisać całość, może i mnie się przyda, tylko będzie w C bo inaczej nie umiem.

W sytuacji krytycznej, (brak sieci z diagnozowanego systemu) zawsze będzie na dysku plik z danymi, który można potem wysłać inaczej.

----------

## lazy_bum

 *Aktyn wrote:*   

>  *soban_ wrote:*   Czy ma ktos pomysl jak to poprawic, tak zeby ...(ewentualnie ograniczone do danej ilosci znakow w prawo)? 
> 
> Teoretycznie jeśli nie da się tego zrobić po stronie serwera, (opcja zawijanie wierszy) albo w samym programie, a nie ma żadnych programów standardowo w linuksie (nie wiem) to moge napisać mały program do formatowania.

 

Przypadkiem nie wynajdujecie koła od nowa?

```
emerge --info | fold -s
```

----------

## Aktyn

 *lazy_bum wrote:*   

> Przypadkiem nie wynajdujecie koła od nowa?
> 
> ```
> emerge --info | fold -s
> ```
> ...

 

Tak podejżewałem że coś takiego może i jest dlatego to napisałem.  :Cool: 

Ale ze mnie tam żaden linuxowiec.  :Laughing:   Szkoda że jeszcze wcięcia nie robi  :Wink: 

----------

## soban_

Wiec troche znowu go poprawilem - teraz juz ladniej to wyglada. Brakuje jeszcze numerowania linijek (o czym mysle) no i chcialbym zeby wszystko odbywalo sie na jednej zmiennej, z czym mam problem. Bo tak jak widac, musze uzyc dodatkowego pliku "X". Czy ma ktos pomysl jak strumien ten przekazac do zmiennej -  tak zeby echo nie wywalalo na monitor zawartosci pliku/polecenia? No i trzeba jeszcze zrobic sprawdzanie, czy zawrtosc pliku nie jest pusta po zgrepowaniu - bo jak widac, teraz wysyla puste pliki (http://paste.pocoo.org/show/319458/ - na samym dole).

----------

## Aktyn

 *soban_ wrote:*   

> No i trzeba jeszcze zrobic sprawdzanie, czy zawrtosc polecenia nie jest pusta - bo jak widac, teraz wysyla puste pliki (http://paste.pocoo.org/show/319458/ - na samym dole).

 

Puste linijki są ok, jeśli jest plik. Wiadomo że jest pusty  :Smile:  Warto dodać jednak komunikaty, np. brak pliku, brak dostępu do pliku.

Tylko doszedłem do wniosku że niektórych poleceń bym nie zawijał, np plików . Taki /etc/fstab może się okazać że źle napisany albo co. A pliki zwykle nie są aż tak długie.

Co innego gdyby program numerował linie i na końcu dawał \ - wtedy by wiadomo było że jest to w jednym ciągu.

Dlatego najlepiej by było gdyby linie zawijał serwer, wtedy mamy jasność. Wiadomo, świstak linii nie zawija. Ewentalnie może jednak wynajdziemy inne koło.  :Wink: 

----------

## soban_

 *Aktyn wrote:*   

> Taki /etc/fstab może się okazać że źle napisany albo co. A pliki zwykle nie są aż tak długie.
> 
> Co innego gdyby program numerował linie i na końcu dawał \ - wtedy by wiadomo było że jest to w jednym ciągu.

 

Troche tego nie rozumiem, ale w sumie moge dac 

```
info cat /etc/fstab
```

Bo ten grep to wywala puste linijki i komentarze. W sumie jakbys mogl napisac dokladniej o co chodzi z tym fstabem - jaka masz na mysli sytulacje, to moze bym zrozumial. Bo jesli chodzi Ci o zawijanie te co podal @lazy_bum (chwala mu za to) to tylko i wylacznie polecenia zawijam, pliki zostawiam takiej - jakie sa (pomijajac to o czym wspomnialem czyli komentarze i puste linijki nie sa brane pod uwage).

 *Aktyn wrote:*   

> Dlatego najlepiej by było gdyby linie zawijał serwer, wtedy mamy jasność. Wiadomo, świstak linii nie zawija. Ewentalnie może jednak wynajdziemy inne koło. ;)

 

Wlasnie tutaj jest drugi problem kola, bo bedzie wtedy ciezko napisac skrypt ktory sciagnie (wgetem) plik konfiguracyjny z wklejarki i potnie na pliki - bedzie duzy problem z wywaleniem numeracji. No i nie bedzie gwarancji ze przy okazji zbednego znaku sie nie wywali. Z drugiej strony sobie pomyslalem, ze na forum (czy gdzies tam w zyciu) mozemy przeciez napisac masz blad w tej linijce i podac te po lewej z paste.pocoo.org - osoba wtedy i tak bedzie wiedziala gdzie musi poprawic, wiec chyba numeracje zostawimy w spokoju. No chyba ze ktos ma pomysl na zastosowanie tego w praktyce?

----------

## Aktyn

 *soban_ wrote:*   

>  *Aktyn wrote:*   Co innego gdyby program numerował linie i na końcu dawał \ - wtedy by wiadomo było że jest to w jednym ciągu. 
> 
> Troche tego nie rozumiem, 

 

Oki pomyliło mi się z mount , mount jest zawinięte.

 *soban_ wrote:*   

>  *Aktyn wrote:*   Dlatego najlepiej by było gdyby linie zawijał serwer, wtedy mamy jasność. Wiadomo, świstak linii nie zawija. Ewentalnie może jednak wynajdziemy inne koło.  
> 
> Wlasnie tutaj jest drugi problem kola, bo bedzie wtedy ciezko napisac skrypt ktory sciagnie (wgetem) plik konfiguracyjny z wklejarki i potnie na pliki - bedzie duzy problem z wywaleniem numeracji.

 

No, z numeracją, to potem tego nie potniesz do pliku wgetem, choć znając życie da się pewnie to zrobić skryptem. Albo trzeba będzie mieć koło ratunkowe.  :Wink: 

Ale nie taki miał być zamiar. Brałem pod uwage tylko informacyjną strone takich działań. W końcu ściągać będziesz tylko to co działa, a to może być przecież w osobnych plikach, w takich plikach dobrze jest mieć też komentarze jakie są standardowo w gentoo. No i w końcu pisałem że plików można nie zawijać a więc i nie numerować.

Więc nie ma sensu wprowadzać numeracji w ogóle, a więc jest dobrze jak jest.

----------

## soban_

 *Aktyn wrote:*   

>  W końcu ściągać będziesz tylko to co działa, a to może być przecież w osobnych plikach, w takich plikach dobrze jest mieć też komentarze jakie są standardowo w gentoo. 

  To jest kolejny fajny pomysl, moge w sumie zbierac pliki w calosci (nawet z komentarzami) ztarowac je i wyslac gdzies w swiat - bo tak mi sie zdaje, ze bylo by bezpieczniej, no chyba ze nie widzisz w tym celu? Wtedy mozna w naglowku w wklejarce dac linka gdzie znajduja sie orginalne pliki. Tylko nie wiem, czy istnieje jakis serwer, ktory pozwala wysylac i sciagac pozniej male pliki konfiguracyjne (cos na wzor wgetpaste - tylko ze pliki np tar). W sumie mysle ze takie "cus" nie istnieje, bo wtedy to juz na serio, mozna bylo by szybko zaspamowac serwer - no chyba ze jest jakies ograniczenie nalozone na dane IP (w rozmiarze). Wiec calosc chyba bedzie musiala ograniczyc sie do jednego ztarowanego pliku na dysku lokalnym.

----------

## Aktyn

A rób sobie co chcesz  :Smile: 

Poszukaj sobie darmowych/płatnych ftp, www. Sam nie wiem gdzie są jakieś fajne miejsca. Masz przecież www.

W końcu konfigi to nie system, dużo miejsca i to zpakowane, nie zajmują.

----------

## SlashBeast

Kombinujesz kombinujesz i zobacz jakiego potwora zes zmontowal. Raczej bezuzyteczny.

Jak chcesz sobie robic backup configow to uzyj gita do tego, wrzucaj je na githuba czy gdzie tam chcesz, szybko i wygodnie.

----------

## soban_

No masz racje, zostawie to raczej w tej formie. Pytanie tylko, mozna to jakos zrobic bez operowania na pliku? Tzn przekierowac strumien do zmiennej tylko nie uzywajac echo ktore najpierw wali polecenie na monitor, a pozniej do zmiennej? I czy przychodza Wam do glowy jakies polecenia/informacje/pliki ktore przydaloby sie dolozyc do tego skryptu?

----------

## SlashBeast

uruchamiaj polecenia w subszelu w zmiennej.

emerge_info="$(emerge --info)"

----------

## lazy_bum

 *soban_ wrote:*   

> I czy przychodza Wam do glowy jakies polecenia/informacje/pliki ktore przydaloby sie dolozyc do tego skryptu?

 

/etc/shadow i aktualne IP. ;)

----------

## soban_

 *lazy_bum wrote:*   

> /etc/shadow i aktualne IP. ;)

 

Wiedzialem ze w koncu padnie to, wiec moze lepiej 'info rm -rf /' albo 'info any_command > /dev/sda';-P 

A tak powaznie, myslicie ze brakuje jakis informacji w skrypcie - ktore moga byc dostepne publicznie?

----------

## lazy_bum

Chociaż ciężko mi dostrzec w tym skrypcie jakiś głębyszy sens, to jednak widzę kilka rzeczy, które można ulepszyć/poprawić:

 *Quote:*   

> file /usr/src/linux/.config 
> 
> (...)
> 
> file /etc/portage/package.unmask 
> ...

 

Od góry:

1. Lepiej jest brać konfigurację jajka, które mamy aktualnie uruchomione (np. zcat /proc/config.gz). /usr/src/linux/.config może być zupełnie innym plikiem niż działająca konfiguracja (a /proc/config.gz może w ogóle nie być, żeby jeszcze trochę utrudnić ;).

2. /etc/portage/package.foo może być katalogiem.

3. /root/.bashrc?

----------

## soban_

@lazy_bum nie wiem jak za bardzo z tym sie uporac:

 *lazy_bum wrote:*   

> 1. Lepiej jest brać konfigurację jajka, które mamy aktualnie uruchomione (np. zcat /proc/config.gz). /usr/src/linux/.config może być zupełnie innym plikiem niż działająca konfiguracja (a /proc/config.gz może w ogóle nie być, żeby jeszcze trochę utrudnić ;).
> 
> 2. /etc/portage/package.foo może być katalogiem.

 Tutaj chyba bez dodatkowych warunkow sie nie obejdzie?  *lazy_bum wrote:*   

> 3. /root/.bashrc?

  Dzieki, ze zauwazyles.

@SlashBeast dzieki za podpowiedz. Juz poprawilem, skrypt dziala na zmiennej (:

//edit

wgetpaste, jakis czas temu - o ile pamietam umarlo, jednak alternatywa jest: 

```
echo -e "nowy sposob na przesylanie" | curl -F "sprunge=<-"
```

skrypt juz poprawilem.

----------

