Advertencia:-delete
no -estándar (no portátil )y riesgoso cuando se usa gfind
.
Recuerde que rm
tiene algunas restricciones de seguridad, pero la página de manual de gfind
no menciona tales restricciones para -delete
. Por lo tanto, recomiendo utilizar el método oficial:
find /var/log/mbackups -mtime +7 -type f -exec rm {} +
Esto no es ni siquiera más lento que el método estándar no -usando -delete
.
После долгих поисков я понял, что не могу использовать expect
со специальным символом, если я не сбежал. Преобразование пароля со специальными символами для использования со сценарием ожидания дает короткий сценарий Perl, который позволил мне программно обрабатывать специальные символы в динамических паролях.
#/bin/sh
pstr='$x%y!zpass' # plain, un-escaped string
estr=$(perl -e 'print quotemeta shift(@ARGV)' "${pstr}")
echo ${estr} # show escaped string
производит:
\$x\%y\!zpass
Редактировать:Я не смог отправить его в сценарий ожидания из командной строки, поэтому не стесняйтесь не принимать это как ответ, но использование вышеизложенного сработало для меня, отправив аргументы в сценарий bash, который, в свою очередь, вызывает сценарий ожидания. Вот как я бы применил это к коду OP.
Сценарий Bash:passwordlessSSH.sh
#/bin/sh
hostname=$1
pstr=$2 # plain, un-escaped string
estr=$(perl -e 'print quotemeta shift(@ARGV)' "${pstr}")
echo ${estr} # show escaped string
/your/script/location/passwordlessSSH.exp $hostname ${estr}
Ожидаемый сценарий:passwordlessSSH.exp
#!/usr/bin/expect -f
set host [lindex $argv 0]
set pass [lindex $argv 1]
spawn ssh-copy-id -i /home/hdpsvcs/.ssh/id_rsa.pub hdpsvcs@$host
expect {
"yes" {
send "yes\r"
}
"assword" {
send "$pass \r"
}
exit 0
Выполнить:Просто выполнить скрипт bash
./passwordlessSSH.sh $hostname "$password"