リモートサーバーのハードドライブを上書きするローカルイメージファイルを書き込むスクリプトを作成しようとしばらくしています。 gzip圧縮を使ってnetcat上でLinux ddを使用しようとしています。 はリモートサーバをsshし、特定のポートでリッスンするためにnetcatコマンドでリモートddを実行してから、このリモートサーバのイメージを書き込むコマンドを起動します。 なぜ私にとってはうまくいかないのか分かりません。多くの前提があり、バックグラウンドでリモートスクリプトを実行したり、バックグラウンドでsshセッション自体を実行したりするなど、さまざまな方法で実行しようとしましたが、私の中からスクリプト。私が実行しようとしています コマンド:ddとnetcatを使用してリモートサーバー上のハードドライブを上書きするローカルイメージファイルを作成するスクリプトを作成します。
は、SSHリモートサーバ:
ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null -i id_rsa (SERVER_IP)
リモートサーバー上のポート9023上でNC上DDのlisenセッションを開始し、gunzipのを使用して解凍:
/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
コマンドを1つずつ実行しようとすると、動作してddセッションが動作しています。スクリプトから実行しようとするとすぐにddセッションがハングします。
それは魅力のように機能します!ありがとう。 今、私はこのプロセスを監視しようとしています。これは、ddとncの両方をlistenとwriteに使用していたときにpvで監視できました。このソリューションでは動作しません。どのように進捗を監視するか? – inverminx
'ssh host 'のように、' dd'の直前に 'pv'をパイプラインで追加することができます。pv | dd ... ' path/to/local.image' – janos