2016-10-26 7 views
1

원격 서버의 하드 드라이브를 대체하기 위해 로컬 이미지 파일을 작성하는 스크립트를 작성하는 데 어려움을 겪고 있습니다. gzip 압축으로 netcat을 통해 Linux dd를 사용하려고합니다. 은 원격 서버를 ssh하고 특정 포트에서 수신 대기하도록 netcat 명령을 통해 원격 dd를 실행 한 다음이 원격 서버에 대한 이미지를 작성하는 명령을 실행합니다. 왜 나를 위해 일하지 않는지 모르겠다. 나는 많은 가정을 가지고 있으며 백그라운드에서 원격 스크립트를 실행하거나 백그라운드에서 ssh 세션 자체를 포함하는 등 여러 가지 방법으로 시도했다. 그러나 그것은 작동하지 않는다. 내 대본에서. 사용 풀어서 포트 9023에 노스 캐롤라이나 이상 DD의 lisen 세션을 시작 원격 서버에dd와 netcat을 사용하여 원격 서버의 하드 드라이브를 덮어 쓸 로컬 이미지 파일을 작성하는 스크립트를 만듭니다.

ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i id_rsa (SERVER_IP) 
  • 및 압축 해제 :

    1. SSH 원격 서버 : 명령은 내가 실행하려고

      /bin/nc -l -p 9023|/bin/gunzip -c|/bin/dd bs=64k of=/dev/sda & 
      
    2. 메인 서버로 나가서 다음을 실행하십시오 :

      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 
    

    sshdd에 필요한 기타 필요한 옵션을 추가합니다.

    CompressionLevel 옵션 (man ssh)은 사용 사례에 따라 너무 재미 있어야합니다.

    +0

    그것은 매력처럼 작동합니다! 감사. 이제 dd와 nc를 모두 듣고 쓸 때이 프로세스를 모니터하려고합니다. pv로 모니터 할 수 있습니다. 이 솔루션으로는 작동하지 않습니다. 어떤 생각을 진행 상황을 모니터링하는 방법? – inverminx

    +0

    'ssh host '와 같이'dd' 바로 앞에'pv'를 파이프 라인에 추가 할 수 있습니다. pv | dd ... ' janos