virt -clon --auto -clon no parece funcionar bien con LVM. Esperaba que creara una instantánea y la usara, pero en su lugar copia todos los datos.
Es mejor hacer la ruta dumpxml/define; y recuerde montar el sistema de archivos raíz del clon y cambiar las direcciones IP y el nombre de host de manera adecuada antes de iniciar el original y el clon.
После того, как вы отправили свой пароль и «нажали Enter», первое, что делает ssh, — это выводит новую строку. Вы не учитываете это в тексте, который вы извлекаете из ожидаемого _выходного буфера. Также обратите внимание, что Ожидание использует CRNL для представления новой строки, что, как я понимаю, должно соответствовать некоторым стандартам сетевого протокола.
Этот интерактивный сеанс ожидания в значительной степени воспроизводит проблему. В конце я отправляю содержимое переменной внешней команде od
, чтобы точно посмотреть, что в ней:
expect1.1> spawn sh -c {read password; ls -t | head -1}
spawn sh -c read password; ls -t | head -1
42945
expect1.2> send "\r"
expect1.3> expect "*.zip"
somefile.zip
expect1.4> set sourceFile $expect_out(0,string)
somefile.zip
expect1.5> exec od -c << $sourceFile
0000000 \r \n s o m e f i l e . z i p
0000016
Что вам нужно сделать, так это захватить текст, оканчивающийся на «.zip», который появляется после последней новой строки . Довольно просто сделать с регулярным выражением:
expect1.1> spawn sh -c {read password; ls -t | head -1}
spawn sh -c read password; ls -t | head -1
42992
expect1.2> send "\r"
expect1.3> expect -re {.*\r\n(.*\.zip)}
somefile.zip
expect1.4> set sourceFile $expect_out(1,string)
somefile.zip
expect1.5> exec od -c << $sourceFile
0000000 s o m e f i l e . z i p
0000014
Обратите внимание на использование (1,string)
, чтобы взять текст, захваченный первым набором скобок.