Сложность заключается в том, что если вы замените все '
на "
, а затем все "
на '
, вы останетесь только с '
. Итак, сначала вам нужно заменить '
чем-то другим, например, символом NULL ( \ 0
), которого, как вы можете смело предположить, не будет во входном файле, - затем «
на '
, а затем снова замените это что-то еще на »
. Например, в perl:
$ perl -pe "if(/KEYWORD){s/'/\0/g; s/\"/'/g; s/\0/\"/g}" file
KEYWORD_1 table name column = 'string' AND column = 'string'
Additional text
.
.
.
KEYWORD_2 text "text in quote" etc.
-pe
: p rint каждую строку ввода после применения сценария, заданного -e
. if (/ KEYWORD /) {something}
: выполните something
, только если эта строка соответствует KEYWORD
. s / foo / bar / g
: замените все вхождения foo
в строке на bar
. g
означает «глобальный». Без него будет заменено только первое вхождение в каждой строке. Обратите внимание, что, поскольку сам скрипт заключен в двойные кавычки, двойные кавычки внутри скрипта необходимо экранировать ( \ "
).
Как указано в комментариях, есть более прямой способ В первую очередь мне следовало подумать:
perl -pe "tr/'\"/\"'/ if /^KEYWORD/" file
Оператор tr
транслитерирует списки символов. Общий формат - tr / searchlist / replacementlist /
. Таким образом, он заменит все '
с «
и все »
с '
только в строках, соответствующих KEYWORD
.
При устранении проблем с демонами всегда следует проверять системные журналы.
В этом конкретном случае, если вы проверите свои системные журналы на хосте NAS
, вы увидите что-то похожее на:
Authentication refused: bad ownership or modes for directory /home/admin
Проблема показана в следующих выходных данных:
admin@NAS:~$ ls -alh
drwxrwxrwx 6 admin users 4.0K Jun 26 07:28 .
В целях безопасности SSH откажется использовать файл authorized_keys
, если любой предок каталога ~ / .ssh
доступен для записи кем-либо, кроме пользователя или root (предок означает ] /home/user/.ssh
, / home / user
, / home
, /
). Это связано с тем, что другой пользователь может заменить каталог ~ / .ssh
(или файл ~ / .ssh / authorized_keys
) своим собственным, а затем использовать ssh для вашего пользователя.
Чтобы исправить это, измените права доступа к каталогу, например:
chmod 755 ~
Есть вероятность, что вы создали пароль для своего закрытого ключа при его создании с помощью ssh-keygen
.
Ниже приводится рабочий процесс, который я использую:
ssh-keygen
ssh-copy-id root @ remote_host
scp /test.text root @ remote_host: / opt / application /