LinuxForum.Fans
Тема

Подписать пакеты в автомате

Автор: XliN 13 сообщений 2264 просмотров
#287048

Подскажите как это сделать? Хочу в атомате пускать по крону.
Должна выполниться команда

text
rpm -adsign *.rpm

но блин она спрашивает пароль и стопорит скрипт. Пароль пустой. Как можно выйти из этого положения?

#287090

При запуске от рута тоже спрашивает пароль?
И команда должна быть

text
rpm --addsign *.rpm
#287091
"XliN" написал:
Пароль пустой. Как можно выйти из этого положения?

Использовать sudo.

#287117

Не пароль просит, а ключевое слово, вот в чем проблема. А оно пустое. Надо как то научить скрипт передать Enter.

#287140

А если попробовать записать в pass.txt ключевое слово, а затем

text

rpm --addsign *.rpm < pass.txt

?

#287149

Можно также попробовать использовать expect. Например, если запрос на ввод выглядит так:

Enter pass phrase:

то можно попробовать такой скрипт:

text

#!/usr/bin/expect

spawn "rpm --addsign *.rpm" expect "Enter pass phrase: " {send "\r"} interact

В данном случае будет посылаться только "Enter".
PS. expect должен быть установлен

#287171

Не могу проверить. У меня 5.43 версия. Там баг. Домой приду и обновлю пакет до 5.45 и проверю.
Ловлю бак с Tcl/Tk

text
 /usr/bin/expect
expect1.1> send "hell"
hellTcl_SetObjLength called with shared object
Аварийный останов
#287402

Набыдлокодил. Смешно показывать, но все же =)

text
#!/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

Может кто поправит или упрастит? =)
У меня много папок в которых нужно подписать, вот теперь и не знаю как быть ((

#287404

Думаю, так будет надёжнее (если в синтаксисе не ошибся), вдруг ещё какой мусор в каталоге попадётся

spisok_i586=`ls ${rep_i586}*rpm`;
spisok_x64=`ls ${rep_x86_64}*rpm`;
#287409

Попробуйте так =). Зачем из пушки по воробьям палить? =)

text
echo " " | rpm --addsign *.rpm

P.S. Прошу прощения. Я пробел указал в скобках. Там нужно знак переноса строки. Возможно подойдет \n или \r

#287411
elve написал:
Попробуйте так =). Зачем из пушки по воробьям палить? =)
text
echo " " | rpm --addsign *.rpm

В том то и дело, что так не работает. Встает на запросе

text
Введите ключевую фразу: 
#287435

Я просчитался =). В примере указал передачу пробела программе =). Попробуйте использовать там симовол перевода строки.

text
echo "

" | rpm --addsign *.rpm

#287436
"elve" написал:
echo "

" | rpm --addsign *.rpm

ну тогда уж echo -ne "\n\n\n" | rpm --addsign *.rpm

ЗЫ: не всё так работает... если программа проверяет, что вводят ей с tty'я, то нужен expect

Войдите или зарегистрируйтесь, чтобы ответить.