2016-10-26 11 views
1

Я пытаюсь создать сценарий, который записывает локальный файл изображения для переопределения жесткого диска на удаленном сервере. для этого я пытаюсь использовать Linux dd поверх netcat с сжатием gzip. передаст удаленный сервер ssh, выполнит команду удаленного dd поверх netcat для прослушивания на определенном порту, а затем запустит команду для записи изображения для этого удаленного сервера. Я не уверен, почему он не работает для меня, у меня есть много предположений, и я пытался сделать это по-разному, включая запуск удаленных сценариев на заднем плане или наличие самой сессии ssh на заднем плане - но это не работает для меня из сценария. команды я пытаюсь запустить:Создайте сценарий, который записывает файл локального изображения, чтобы переопределить жесткий диск на удаленном сервере с помощью dd и netcat.

  1. SSH удаленный сервер:

    ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i id_rsa (SERVER_IP) 
    
  2. на удаленном сервере запустить Lisen сессию дд над нк на порту 9023 и распаковывать с помощью Gunzip:

    /bin/nc -l -p 9023|/bin/gunzip -c|/bin/dd bs=64k of=/dev/sda & 
    
  3. выход на главный сервер и выполнение:

    dd if=/var/tmp/ADT/Server-full/image.gz bs=64k |pv|nc (SERVER_IP) 9023 
    

При попытке запуска команд один за другим он работает, а сеансы dd работают. при попытке запустить его из сценария сеанс dd висит сразу.

ответ

1

Вы можете перенаправить локальный ввод через сжатый сеанс ssh и использовать этот вход с другой стороны. Вы можете сделать это непосредственно без Netcat:

ssh -C [email protected] 'dd of=/dev/sda' < /path/to/local.image 

Добавьте другие необходимые параметры, необходимые для ssh и dd.

Опция CompressionLevel в man ssh должна быть интересна и для вашего прецедента.

+0

Это работает как шарм! Благодарю. Теперь я пытаюсь контролировать этот процесс, когда он использовал dd и nc для прослушивания и записи, я мог контролировать его с помощью pv. с этим решением это не сработает. любая идея, как контролировать прогресс? – inverminx

+0

Вы можете добавить 'pv' в конвейер прямо перед' dd', например 'ssh host 'pv | dd ... ' janos