Fórum Root.cz
Hlavní témata => Software => Téma založeno: roman31x 25. 04. 2021, 08:23:13
-
Dobrý den,
Hledám program s GUI pro automatizaci editovaní konfiguračních souborů v linuxu
Příklad: mám 3 soubory ve kterých potřebuji upravit nebo přidat nějaké hodnoty.
"sysctl.conf"
"services"
"sshd_config"
A abych nemusel vytvářet ručně nějaký skript se vším všudy, hledám program do kterého bych zadal:
V souboru "sshd_config" najdi řádek s hodnotou "#MaxSessions 10" a změn údaje na "MaxSessions 5"
Podobnou věc udělá i u dalších dvou nebo více souborů.
Může to být program který vytváří i skript který po spuštění provede určení změny.
Děkuji
-
Nevím o žádném takovém programu s GUI, ale to snad ani není třeba. Zvládá to jednořádkový sed, který je možné klidně přidat do toho skriptu. Příklad:
$ sed -i 's/DoSomething false/DoSomething true/g' config_file
-
Ve Windows jsem si na to udělal jednoduché GUI v autohotkey najdi>nahraď jestli dojde k problému zapsat do logu .atd
bych řekl, že v linuxu na to existuje nějaký program nebo nějaká šikovná utilitka, když je linux prolezlý konfiguračními soubory skrz na skrz.
-
Ano, taková šikovná utilitka existuje. Jmenuje se sed, viz výše.
-
[...] Příklad:
$ sed -i 's/DoSomething false/DoSomething true/g' config_file
vodnejsi je menit jen na radku ktery odpovida, napr. pokud radek zacina (znak ^) DoSomething, pripadne za nim mezera aby to nebralo treba i DoSomethinkOther:
sed '/^DoSomething /s/false/true/' -i config_file
EDIT: jinak GUI program co by delal ruzne nahrady v ruznych souborech nevim, vyskocil na me jen GUI "pro" sed, co umi 1 stejnou nahradu udelat ve vice souborech :) http://regexxer.sourceforge.net/
-
jinak GUI co by vytvarelo skript kam si se po jednom postupne zadalo co na co kde zmenit by bylo na par radku skriptu s pouzitim YAD(ci Zenity), "obavam" se ze bych to napsal rychleji nez neco hotoveho na netu nasel :)
-
Ano, taková šikovná utilitka existuje. Jmenuje se sed, viz výše.
tak tak.
Pokud to člověk sype na víc serverů najednou, tak regexpy se dají provozovat přes Ansible - třeba:
- name: disable password authentication
replace:
path: /etc/ssh/sshd_config
regexp: '^PasswordAuthentication yes$'
replace: 'PasswordAuthentication no'
-
Moje preferovana varianta pro strojovou operaci "SET" je:
- smazat vsechny radky obsahujici case insensitive verzi: ^\s*KeyWord\s.*
- append na konec, KeyWord NewValue
Vychazim totiz z predpokladu, ze soubor nemusi obsahovat dany parametr, nebo ho muze obsahovat jinak napsanej. A pak se hodi videt historii zmen / customizaci nastave na konci souboru na jednom miste, nez abych musel delat diff vuci distribucnimu default configu.
-
Moje preferovana varianta pro strojovou operaci "SET" je:
- smazat vsechny radky obsahujici case insensitive verzi: ^\s*KeyWord\s.*
- append na konec, KeyWord NewValue
Vychazim totiz z predpokladu, ze soubor nemusi obsahovat dany parametr, nebo ho muze obsahovat jinak napsanej. A pak se hodi videt historii zmen / customizaci nastave na konci souboru na jednom miste, nez abych musel delat diff vuci distribucnimu default configu.
Něco na tom bude, protože původní parametr nejraději zakomentuji a hned pod něj uvedu s novou hodnotou.
-
Moje preferovana varianta pro strojovou operaci "SET" je:
- smazat vsechny radky obsahujici case insensitive verzi: ^\s*KeyWord\s.*
- append na konec, KeyWord NewValue
Vychazim totiz z predpokladu, ze soubor nemusi obsahovat dany parametr, nebo ho muze obsahovat jinak napsanej. A pak se hodi videt historii zmen / customizaci nastave na konci souboru na jednom miste, nez abych musel delat diff vuci distribucnimu default configu.
Něco na tom bude, protože původní parametr nejraději zakomentuji a hned pod něj uvedu s novou hodnotou.
Jsou ještě dva přístupy k tomuto problém:
- generovat konfigurační soubory ze šablon
- dělat změny ručně + verzovat ve verzovacím systému + aplikovat patche
Verze 2 je IMHO nejpokročilejší, drží i historii a je decentralizovaná. Existují na to i hotové systémy (nemám zkušenost).
-
Moje preferovana varianta pro strojovou operaci "SET" je:
- smazat vsechny radky obsahujici case insensitive verzi: ^\s*KeyWord\s.*
- append na konec, KeyWord NewValue
Vychazim totiz z predpokladu, ze soubor nemusi obsahovat dany parametr, nebo ho muze obsahovat jinak napsanej. A pak se hodi videt historii zmen / customizaci nastave na konci souboru na jednom miste, nez abych musel delat diff vuci distribucnimu default configu.
Něco na tom bude, protože původní parametr nejraději zakomentuji a hned pod něj uvedu s novou hodnotou.
Jsou ještě dva přístupy k tomuto problém:
- generovat konfigurační soubory ze šablon
- dělat změny ručně + verzovat ve verzovacím systému + aplikovat patche
Verze 2 je IMHO nejpokročilejší, drží i historii a je decentralizovaná. Existují na to i hotové systémy (nemám zkušenost).
Tím "nejpokročilejším" způsobem si verzuji hlavně konfiguraci Vimu. Byl bych docela nerad, kdyby se mi někde ztratila a dalo by mi dost práce ji napsat znovu.
Ovšem u systémových konfiguráků jsou poněkud odlišné požadavky na verzování.
Generování ze šablon je fajn, jen je nutné mít v záhlaví poznámku, kde má být ta konfigurace změněna tak, aby nebyla v zápětí přepsána.
-
..
- smazat vsechny radky obsahujici case insensitive verzi: ^\s*KeyWord\s.*
- append na konec, KeyWord NewValue
..
Mám dojem, že když jsem kdysi začínal s Puppetem, tak jsem jednou takhle nastřílel všechno do MatchUser* bloku :/ :).
* sshd_config specifikum
-
Moje preferovana varianta pro strojovou operaci "SET" je:
- smazat vsechny radky obsahujici case insensitive verzi: ^\s*KeyWord\s.*
- append na konec, KeyWord NewValue
Vychazim totiz z predpokladu, ze soubor nemusi obsahovat dany parametr, nebo ho muze obsahovat jinak napsanej. A pak se hodi videt historii zmen / customizaci nastave na konci souboru na jednom miste, nez abych musel delat diff vuci distribucnimu default configu.
Něco na tom bude, protože původní parametr nejraději zakomentuji a hned pod něj uvedu s novou hodnotou.
JJ, OP chce nahradit default, ( v source má #) , takže nejjednodušeji echo “nova hodnota” >> soubor.
Mimochodem, dělat tyhle věci hromadně pouhým skriptem na více serverech pres nejake dsh , to bych neriskoval. Ansible neznám, ale kouknu.
-
Pokud není účelem jednohuPka, použijte Ansible. Pokud je GUI podmínkou, pak AWX/Tower.