Подскажите как это сделать? Хочу в атомате пускать по крону.
Должна выполниться команда
rpm -adsign *.rpmно блин она спрашивает пароль и стопорит скрипт. Пароль пустой. Как можно выйти из этого положения?
Подскажите как это сделать? Хочу в атомате пускать по крону.
Должна выполниться команда
rpm -adsign *.rpmно блин она спрашивает пароль и стопорит скрипт. Пароль пустой. Как можно выйти из этого положения?
При запуске от рута тоже спрашивает пароль?
И команда должна быть
rpm --addsign *.rpmПароль пустой. Как можно выйти из этого положения?
Использовать sudo.
Не пароль просит, а ключевое слово, вот в чем проблема. А оно пустое. Надо как то научить скрипт передать Enter.
А если попробовать записать в pass.txt ключевое слово, а затем
rpm --addsign *.rpm < pass.txt
?
Можно также попробовать использовать expect. Например, если запрос на ввод выглядит так:
Enter pass phrase:
то можно попробовать такой скрипт:
#!/usr/bin/expect
spawn "rpm --addsign *.rpm"
expect "Enter pass phrase: " {send "\r"}
interact
В данном случае будет посылаться только "Enter".
PS. expect должен быть установлен
Не могу проверить. У меня 5.43 версия. Там баг. Домой приду и обновлю пакет до 5.45 и проверю.
Ловлю бак с Tcl/Tk
/usr/bin/expect
expect1.1> send "hell"
hellTcl_SetObjLength called with shared object
Аварийный остановНабыдлокодил. Смешно показывать, но все же =)
#!/bin/bash
rep_i586="/var/www/html/packages.mageialinux.ru/mageia2/RPMS/i586/"
rep_x86_64="/var/www/html/packages.mageialinux.ru/mageia2/RPMS/x86_64/"
spisok_i586=`ls ${rep_i586}`;
spisok_x64=`ls ${rep_x86_64}`;
function gpg_i586(){
for rpmpkg586 in `echo $spisok_i586`
do
/usr/bin/expect << EOF
spawn rpm --addsign $rep_i586$rpmpkg586
expect "Введите ключевую фразу: " { send " \n" }
expect "# " { send "q" }
exit
EOF
done
}
function gpg_x86_64(){
for rpmpkg_x64 in `echo $spisok_x64`
do
/usr/bin/expect << EOF
spawn rpm --addsign $rep_x86_64$rpmpkg_x64
expect "Введите ключевую фразу: " { send " \n" }
expect "# " { send "q" }
exit
EOF
done
}
gpg_i586
gpg_x86_64
Может кто поправит или упрастит? =)
У меня много папок в которых нужно подписать, вот теперь и не знаю как быть ((
Думаю, так будет надёжнее (если в синтаксисе не ошибся), вдруг ещё какой мусор в каталоге попадётся
spisok_i586=`ls ${rep_i586}*rpm`;
spisok_x64=`ls ${rep_x86_64}*rpm`;
Попробуйте так =). Зачем из пушки по воробьям палить? =)
echo " " | rpm --addsign *.rpmP.S. Прошу прощения. Я пробел указал в скобках. Там нужно знак переноса строки. Возможно подойдет \n или \r
Попробуйте так =). Зачем из пушки по воробьям палить? =) textecho " " | rpm --addsign *.rpm
В том то и дело, что так не работает. Встает на запросе
Введите ключевую фразу: Я просчитался =). В примере указал передачу пробела программе =). Попробуйте использовать там симовол перевода строки.
echo "
" | rpm --addsign *.rpm
echo "
" | rpm --addsign *.rpm
ну тогда уж echo -ne "\n\n\n" | rpm --addsign *.rpm
ЗЫ: не всё так работает... если программа проверяет, что вводят ей с tty'я, то нужен expect