Bash 创建一个脚本,使用dd和netcat编写本地映像文件以覆盖远程服务器上的硬盘驱动器
我正在努力创建一个脚本,编写一个本地映像文件来覆盖远程服务器上的硬盘驱动器。 为此,我正在尝试通过netcat使用LinuxDD和gzip压缩。 将ssh连接到远程服务器,通过netcat执行远程dd命令以侦听特定端口,然后启动命令为此远程服务器写入映像。 我不知道为什么它对我不起作用,我有很多假设,我尝试了很多方法,包括在后台运行远程脚本,或者在后台运行ssh会话本身,但是在脚本中它对我不起作用。 我正在尝试运行的命令:Bash 创建一个脚本,使用dd和netcat编写本地映像文件以覆盖远程服务器上的硬盘驱动器,bash,ssh,netcat,dd,Bash,Ssh,Netcat,Dd,我正在努力创建一个脚本,编写一个本地映像文件来覆盖远程服务器上的硬盘驱动器。 为此,我正在尝试通过netcat使用LinuxDD和gzip压缩。 将ssh连接到远程服务器,通过netcat执行远程dd命令以侦听特定端口,然后启动命令为此远程服务器写入映像。 我不知道为什么它对我不起作用,我有很多假设,我尝试了很多方法,包括在后台运行远程脚本,或者在后台运行ssh会话本身,但是在脚本中它对我不起作用。 我正在尝试运行的命令: ssh远程服务器: ssh -o StrictHostKeyChecki
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i id_rsa (SERVER_IP)
/bin/nc -l -p 9023|/bin/gunzip -c|/bin/dd bs=64k of=/dev/sda &
dd if=/var/tmp/ADT/Server-full/image.gz bs=64k |pv|nc (SERVER_IP) 9023
当尝试一个接一个地运行命令时,它工作了,dd会话也工作了。当尝试从脚本运行时,dd会话立即挂起 您可以通过压缩的
ssh
会话重定向本地输入,并在另一端使用该输入。您可以在不使用netcat的情况下直接执行此操作:
ssh -C user@server 'dd of=/dev/sda' < /path/to/local.image
ssh-Cuser@server'dd of=/dev/sda'
添加ssh
和dd
所需的其他必要选项
manssh
中的CompressionLevel
选项对于您的用例来说也应该很有趣。它就像一个魔咒!谢谢现在我正试图监视这个过程,当它使用dd和nc进行侦听和写入时,我可以使用pv来监视它。使用此解决方案是行不通的。知道如何监控进度吗?您可以在管道中的dd
前面添加pv
,比如ssh主机'pv|dd…'