web-dev-qa-db-ja.com

同じリモートマシンにログインしている他のユーザーのIPアドレスを知るにはどうすればよいですか?

whoコマンドを使用して、リモートマシン上の他のユーザーの名前を確認できます... これらのユーザーのIPアドレスも知りたいです...

コマンド/sbin/ifconfingnetstatが肯定的な結果を得ることができませんでした...

LinuxとUnixの両方と互換性のあるこのソリューションが必要です...

そのユーティリティのコマンドはありますか?スクリプトを記述したり、一種のパ​​イプを使用したりする必要がありますか?

13
omar

w パッケージの一部であるprocpsコマンドを試してください。

$ w
 21:12:09 up 6 days,  7:42,  1 user,  load average: 0.27, 1.08, 1.64
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
h3xx     pts/11   192.168.1.3      21:12    2.00s  0.04s  0.04s -bash
17
amphetamachine

私のDebian Linuxシステムのwhoマンページには、ホスト名ではなくIPを表示する--ipsオプションがあることが示されています。

5
LawrenceC

whoは私が使用するコマンドですが、100%信頼できるものではありません。結果の名前は、IPアドレスのPTRレコードからのものです。名前に一致するAレコードがある場合とない場合があります。

Root権限があれば、psnetstatのデータを統合できます。それ以外の場合は、どの接続がどのプロセスに属しているかを知識に基づいて推測することができます。

使用できる他のツールがありますが、UNIX/Linuxフレーバー全体で一貫したパラメーターと出力を持つプログラムは見つかりませんでした。

1
BillThor

一部の古いUNIX(つまりSCO OpenServer Release 5.0.7))では、wコマンドが適切なスタートですが、デフォルトではIPアドレスが出力されません。コマンド引数は、必須。manページから:

-x
   Print out the hostname. This option cannot be used with
   the -u option.

-X
   Print out full hostnames. This option implies the -x
   option. Hostnames printed by the -x option are truncated
   to fit into a field; hostnames printed by the -X option
   are not truncated.

例えば:

$ w
  2:39pm  up 2 days, 11:07,  1 user,  load average: 0.00, 0.00, 0.00
User     Tty       Login@   Idle   JCPU   PCPU  What
minime   ttyp0     2:31pm      -      -      -  w
$ w -x
  2:39pm  up 2 days, 11:07,  1 user,  load average: 0.00, 0.00, 0.00
User     Tty       Login@   Idle   JCPU   PCPU Hostname           What
minime   ttyp0     2:31pm      -      -      - 192.168.36.188     w -x
1
kbulgrien