SCP команда продолжает спрашивать пароль

Сложность заключается в том, что если вы замените все ' на ", а затем все " на ' , вы останетесь только с '. Итак, сначала вам нужно заменить ' чем-то другим, например, символом 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. 

Explanation

  • -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 .

1
26.06.2016, 08:43
2 ответа

При устранении проблем с демонами всегда следует проверять системные журналы.
В этом конкретном случае, если вы проверите свои системные журналы на хосте 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 ~
7
27.01.2020, 23:12

Есть вероятность, что вы создали пароль для своего закрытого ключа при его создании с помощью ssh-keygen .

Ниже приводится рабочий процесс, который я использую:

  1. ssh-keygen
  2. ssh-copy-id root @ remote_host
  3. scp /test.text root @ remote_host: / opt / application /
3
27.01.2020, 23:12

Теги

Похожие вопросы