SFTP с перенаправлением и здесь doc имеет проблемы с Cron

Команда

sed 's/[^0-9]//g'

будет действовать как фильтр, пропускающий только цифры.

Так бы и

sed 's/[^0-9]*//g'

Но из-за gв конце, *больше не нужно (в конце об этом ).

Регулярное выражение [^0-9]означает «любой символ, не являющийся цифрой», а команда seds/[^0-9]//gозначает «заменить любой нецифровой символ -ничем, затем повторить столько раз, сколько возможно». в каждой строке ввода (, т. е. не только первая не -цифра в каждой строке )".

Пример:

$ echo '1-2 1-2? Is this mic on? Hello world! It is 2018!' | sed 's/[^0-9]//g'
12122018

То же, что и команда

tr -dc '0-9\n'

который также удаляет не -цифру в своем вводе (и оставляет новые строки тоже ).


Разница между [^0-9]и [^0-9]*заключается в том, что первый соответствует ровно одному нецифровому символу -, а второй соответствует нулю или более нецифровым символам -. Если вы хотите удалить не -цифры , вы не хотите сопоставлять пустые строки (с «нулем» в «ноль или больше» выше ), поэтому имеет смысл соответствует [^0-9], чем соответствует [^0-9]*.

Флаг gв конце команды sedозначает «глобально», то есть везде в строке, а не только в первом совпадении. Удалив это, вы заметите, что

$ echo '123 testing' | sed 's/[^0-9]*//'
123 testing

соответствует пустому месту перед 1и ничего не заменяет. Более наглядный пример этого:

$ echo '123 testing' | sed 's/[^0-9]*/(&)/'
()123 testing

... и с gв конце:

$ echo '123 testing' | sed 's/[^0-9]*/(&)/g'
()1()2()3( testing)

И тогда у нас есть

$ echo '123 testing' | sed 's/[^0-9]//'
123testing

, который соответствует и заменяет пробел, который не является цифрой -. Более наглядный пример этого:

$ echo '123 testing' | sed 's/[^0-9]/(&)/'
123( )testing

... и с gв конце:

$ echo '123 testing' | sed 's/[^0-9]/(&)/g'
123( )(t)(e)(s)(t)(i)(n)(g)
0
09.05.2020, 00:19
2 ответа

Я сослался на этот пост, чтобы получить информацию о настройке и просмотре электронной почты.

Пришлось установить почтовый MTA (Агент передачи почты ), так как stderr и stdout явно отправляются на электронную почту.

aptitude install postfix

Используйте подобную команду, чтобы просмотреть несколько последних строк файла (или открыть в редакторе)

tail -f /var/mail/<your_username>

Затем я увидел ошибку безопасности, и мне пришлось переключиться с «root» на «» для пользователя в файле задания cron.

1
28.04.2021, 23:15

Всего лишь дикая догадка, но разве это тоже не сработает?scp -i /home/nealwalters/keys/SFTPUser1_Private.pem /home/nealwalters/downloads/*.csv SFTPUser3@192.168.1.179:User3ToMyCompany

Вы также можете создать ~/.ssh/configс содержимым

Host company
  Hostname 192.168.1.179
  User STFPUser3
  IdentityFile /home/nealwalters/keys/SFTPUser1_Private.pem

И тогда вы можете сделать это всего лишь:

scp /home/nealwalters/downloads/*.csv company:User3ToMyCompany

Причина, по которой вы получаете ошибку проверки ключа хоста, заключается в том, что пользователь, выполняющий сценарий, не имеет ключа хоста для этого хоста. Кажется, вы запускаете cronjob как root. Вы также можете создать cronjob со своим пользователем с помощью crontab -e.

1
28.04.2021, 23:15

Теги

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