2015-03-04 2 views
1

Я подписываю большой набор пакетов RPM (50000) с помощью следующей командыкоманда RPM неоднократно запрашивая пароль

find $1 -name \*.rpm |xargs rpm --resign 

В рамках структуры команды RPM, он запрашивает пароль. Я использую сценарий ожидания для подачи пароля, как это.

expect -c " 
spawn $1 
expect \"Enter pass phrase: \" 
send $2\r 
interact 

Это очень хорошо работает для первых 1400 нечетных файлов. После этого я снова запрошу пароль. На этот раз я должен вручную предоставить его. Таким образом, для каждых 1400 нечетных файлов это происходит.

Мне нужна помощь в понимании

  1. Если этот пароль выброшен из RPM, если да, то почему? Поддерживает ли RPM пароль в кеше только в течение оговоренного периода времени?
  2. Предполагая, что так, я вручную скопировал код «ожидать», чтобы предоставить пароль несколько раз в моем втором файле, чтобы предоставить пароль, все еще не работает.
  3. Выполняется ли «взаимодействие» с фолом?

Ваша помощь очень ценная. Спасибо

+0

То, что я также наблюдал, даже без использования 'ожидать', если я просто запускаю команду' find $ 1 -name \ *. Rpm | xargs rpm --resign', даже тогда он запрашивает пароль несколько раз, каждые 1400 нечетных файлов, так что, вероятно, ничего плохого в 'ожидать'. Если я удалю «найти» и запустил «rpm - resign» в одной папке, содержащей более 10K файлов, она проходит через пароль с одним запросом пароля. – Srikanth

ответ

3

Я думаю, что проблема находится в xargs. xargs попытается предоставить столько аргументов команде, пока вся командная строка не превысит лимит. Поэтому, когда у вас много файлов, xargs может потребоваться несколько раз вызвать rpm. --show-limits может «» отображать ограничения на длину командной строки, которые налагаются операционной системой ». Например, на моей системе:

# xargs --show лимитов </DEV/нуле
Ваших переменные окружения занимают 1689 байты
POSIX нижних и верхние пределы по длине аргумента: 2048, 2094592
Максимальная длина команды мы могли бы использовать: 2092903
Размер буфера команд мы на самом деле с помощью: 132761
#

+0

Большое спасибо за ваши материалы. Это действительно проблема с «xargs». Мы увеличили размер входного потока xargs, используя '-s', и теперь он работает как сон. еще раз спасибо – Srikanth

Смежные вопросы