8

ping を実行する必要があるすべての IP を含む「ips」という名前のファイルがあります。これらの IP を ping するために、次のコードを使用します。

cat ips|xargs ping -c 2

しかし、コンソールにはpingの使用法が表示されますが、正しく行う方法がわかりません。Mac OS を使用しています

4

7 に答える 7

17

複数のIPをサポートしていないため、一度に1つのIPを渡すには、オプション-n1を使用する必要があります。xargsping

$ cat ips | xargs -n1 ping -c 2

デモ:

$ cat ips
127.0.0.1
google.com
bbc.co.uk

$ cat ips | xargs echo ping -c 2
ping -c 2 127.0.0.1 google.com bbc.co.uk

$ cat ips | xargs -n1 echo ping -c 2
ping -c 2 127.0.0.1
ping -c 2 google.com
ping -c 2 bbc.co.uk

# Drop the UUOC and redirect the input
$ xargs -n1 echo ping -c 2 < ips
ping -c 2 127.0.0.1
ping -c 2 google.com
ping -c 2 bbc.co.uk
于 2013-01-21T13:34:34.640 に答える
2

ipsファイルの各行に ip または hostname がある場合:

( while read ip; do ping -c 2 $ip; done ) < ips

フラグを使用してタイムアウトを変更することもできる-Wため、一部のホストが起動していない場合でも、スクリプトが長時間ロックされることはありません。-qこの場合、静かな出力にも役立ちます。

( while read ip; do ping -c1 -W1 -q $ip; done ) < ips
于 2013-01-21T13:33:01.543 に答える
1

ファイルが1行あたり1IPである場合(そしてファイルが大きすぎない場合)、forループを使用してそれを行うことができます。

for ip in $(cat ips); do
  ping -c 2 $ip;
done
于 2013-01-21T13:34:05.637 に答える
1

GNU Parallel を使用すると、次のようになります。

parallel -j0 ping -c 2 {} :::: ips

これにより、ips またはプロセスと同じ数のジョブが並行して実行されます。

また、異なるジョブからの出力が混在しないようにするため、出力を使用すると、2 つの異なるジョブから半分の行が得られないことが保証されます。

GNU Parallel は一般的な並列化ツールであり、同じマシン上または ssh アクセスできる複数のマシン上で並列にジョブを簡単に実行できます。

4 つの CPU で実行したい 32 の異なるジョブがある場合、並列化する簡単な方法は、各 CPU で 8 つのジョブを実行することです。

シンプルなスケジューリング

GNU Parallel は代わりに、プロセスが終了したときに新しいプロセスを生成します - CPU をアクティブに保ち、時間を節約します:

GNU 並列スケジューリング

インストール

GNU Parallel がディストリビューション用にパッケージ化されていない場合は、root アクセスを必要としない個人用インストールを実行できます。これを行うと、10 秒で実行できます。

(wget -O - pi.dk/3 || curl pi.dk/3/ || fetch -o - http://pi.dk/3) | bash

その他のインストール オプションについては、 http: //git.savannah.gnu.org/cgit/parallel.git/tree/READMEを参照してください。

もっと詳しく知る

他の例を参照してください: http://www.gnu.org/software/parallel/man.html

紹介ビデオを見る: https://www.youtube.com/playlist?list=PL284C9FF2488BC6D1

チュートリアル: http://www.gnu.org/software/parallel/parallel_tutorial.html

サポートを受けるには、メーリング リストにサインアップしてください: https://lists.gnu.org/mailman/listinfo/parallel

于 2015-02-09T08:29:45.913 に答える
1

fpingを使用できます。また、それを並行して行い、スクリプトに適した出力を提供します。

    $ cat ips | xargs fping -q -C 3
    10.xx.xx.xx   : 201.39 203.62 200.77
    10.xx.xx.xx  : 288.10 287.25 288.02
    10.xx.xx.xx   : 187.62 187.86 188.69
    ...
于 2015-02-08T13:26:04.470 に答える
0

これをやってみてください:

cat ips | xargs -i% ping -c 2 %
于 2013-01-21T13:37:57.897 に答える