Porównaj ceny domen i usług IT, sprzedawców z całego świata

Jak mogę zapobiec awariom seda w połączeniu z apg?


Piszę skrypt, który automatycznie zainstaluje dla mnie WordPress, aby ułatwić mi życie, ponieważ muszę stale wdrażać instalacje WordPress.
Staram się jednak upewnić, że nigdy nie będę musiał z nim wchodzić w interakcje, a to odbiera mi sen.
Aby wygenerować hasła do baz danych i innych rzeczy, używam apg, a następnie seda, aby zastąpić ciąg poprawnym hasłem.

Wygląda mniej więcej tak:

DOMAIN="$2"
DB_NAME_USER="$(echo $DOMAIN | sed -e 's/\.//g')"
DB_PASSWORD="$(apg -a 1 -n 1 -m 64 -d -c cl_seed -E \_\"\'\`\/\\\=)"sed -i "s/database_name_here/$DB_NAME_USER/g"/srv/"$DOMAIN"/wp-config.php
sed -i "s/username_here/$DB_NAME_USER/g"/srv/"$DOMAIN"/wp-config.php
sed -i "s/password_here/$DB_PASSWORD/g"/srv/"$DOMAIN"/wp-config.php

Zastąpienie bazy danych i nazwy użytkownika działa poprawnie, ale zastąpienie hasła sześć na dziesięć razy kończy się niepowodzeniem i

Dostaję coś takiego:

define ('DB_PASSWORD', 'Ymb {X-dT ~ l5Agg9q561A ^? n

password_here

D; $ U, s> mu *: f7 | BK4? OM # OH> cHgsI9GndW @ ~ SkBQ ');
Skoncentruj się na problemie. Zamiast usuwać część „password_here” i zastępować ją faktycznym hasłem, w pewnym sensie łączy ciąg znaków w środku hasła.
Pomyślałem, że może to być znak wygenerowany z apg, który zadzierał z sedem, ale usunąłem sporo z hasła wygenerowanego za pomocą -E i nadal dużo to rozumiem.
To samo dzieje się z innymi zamiennikami, zawsze w grę wchodzą apg i sed. Zastąpienie takich rzeczy jak

_PASSWORD_HERE_

prowadzą od czasu do czasu do tego samego problemu.
Czy istnieje sposób obejścia tego problemu, czy też muszę nadal próbować znaleźć symbole, które powodują problem, a następnie dodać je do listy wyjątków apg? A może powiedzieć sedowi, żeby wymienił całą linię, a nie tylko tę, którą chcę?
Z góry dziękuję!
Zaproszony:
Anonimowy użytkownik

Anonimowy użytkownik

Potwierdzenie od:

Musisz tego unikać
         \
,
/
i
         &
znaków w twoim wejściu, w przeciwnym razie sed działa na nich. Raczej
DB_PASSWORD=$(echo "$DB_PASSWORD" | sed -e 's/[\/&]/\\&/g')
sed -i "s/password_here/$DB_PASSWORD/g"/srv/"$DOMAIN"/wp-config.php

musi załatwić sprawę.

Aby odpowiedzieć na pytania, Zaloguj się lub Zarejestruj się