От https://wiki.debian.org/HowToUpgradeKernel
Убедитесь, что вы прочитали все, что он говорит вам во время установки, особенно об образе initrd. Если вы используете необычный загрузчик, вам может потребоваться переконфигурация после установки образа ядра - не не забудьте указать ему использовать соответствующий образ initrd для ядра в этом случае (страница PackageManagement). этом случае (страница PackageManagement содержит подробную информацию о перечислении содержимого пакета).
Вы, очевидно, загрузили более новый образ ядра, но, очевидно, он не вызывается вашим загрузчиком.
Если у вас есть доступ к конфигурации вашего загрузчика, убедитесь, что вызывается правильный образ.
Однако более вероятно, что вы запускаете систему в контейнере, поэтому только системный администратор хоста может изменить ядро для вас.
Одним из упрощений было бы устранение ошибочного и медленного цикла оболочки while
, который также освободил бы stdin
для использования для interact
. То есть вместо этого входной файл будет передан и прочитан кодом TCL в сценарии expect
.
#!/usr/bin/expect
if {[llength $argv] != 1} {
puts stderr "Usage: $0 iplist-file"
exit 1
}
set ipfh [open [lindex $argv 0]]
while {[gets $ipfh ip] >= 0} {
spawn ssh root@$ip dmidecode
expect "Password:"
send "Hunter2\r";
interact
}
У thrig есть отличный ответ. Если вы хотите придерживаться bash (, даже несмотря на то, что цикл чтения while -чрезвычайно медленный и утомительный для получения правильного синтаксиса -мудрого ), используйте другой файловый дескриптор для чтения из файла и разрешите ожидать держаться за стандартный ввод:
while IFS= read -r -u3 ip; do
#.................^^^
/usr/bin/expect << EOF
spawn ssh "root@$ip" dmidecode
expect "Password:"
send "xxxx\r";
interact
EOF
done 3< iplist
#...^^
Если команда dmidecode не требует участия человека, измените interact
наexpect eof