digital/devices/自宅LAN
の編集
https://over.6pb.info/wiki/?&8b55ed3296
[
トップ
] [
編集
|
差分
|
履歴
|
添付
|
リロード
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
-- 雛形とするページ --
(no template pages)
**Windows [#keddbc7e] 上記のように、サーバーはWindows 10上のVirtualBox上のCentOS 7を使っている。(最近、CentOS 6から更新。)土台のWindowsの状態を遠隔から把握するのに以下のスクリプトを使っている。別途、Apache httpd(Windowsにインストール)とPerl(Active Perl, Windows版)が必要。状態把握のやりかたはいろいろあり、普通はWindowsの管理ツールを使うはずだが、それらは個人的になじみがないので、代わりに使い慣れた道具立てを使っている。 #pre{{{ #!/usr/bin/perl use utf8; open(STDERR, ">&STDOUT"); #open(STDERR, ">>error.log"); use strict; use warnings; use CGI qw(:cgi); my $q = CGI->new; { my $title = 'WMIC PROCESS'; print $q->header(); print $q->start_html( -title=>$title, -style => { -verbatim => 'td:nth-child(4), td:nth-child(6) {text-align: right;}' }, ); } my $wmic = 'wmic path Win32_PerfFormattedData_PerfProc_Process get Name,PercentProcessorTime,WorkingSet,WorkingSetPeak /format:csv'; my @wmic = qx($wmic); my @lines = (); my %workingSet = (); shift @wmic; # 1行目は空 my @head = map {$_ =~ s/\s+$//; $_} map {split(',')} shift @wmic; push(@head,'rate'); for (@wmic) { chomp; my @headers = @head; my %line = (); my @cols = split(','); for my $key (@headers) { $line{$key} = shift @cols // 0; $line{$key} =~ s/\s+$//; # ゴミ取り } push @lines, {%line}; $workingSet{$line{'Name'}} = $line{'WorkingSet'}; # rate計算用 } # 配列の順序を入れ替え @head[4,5] = @head[5,4]; print qq(<table border>\n); # ソート列を変えて2回呼ぶ。 &sort_print('PercentProcessorTime'); &sort_print('WorkingSet'); print qq(</table>\n); exit; # -----------------------------------終わり sub sort_print { my ($sortKey) = $_[0]; my @lines = sort { $b->{$sortKey} <=> $a->{$sortKey} } @lines; # spliceで原本を壊さないようmyを使う。 splice(@lines,10); print qq(<tr>); map {printf qq(<td>%s),$_} (@head); print qq(</tr>\n); for (@lines) { my %line = %{$_}; next if $sortKey eq 'PercentProcessorTime' && $line{'PercentProcessorTime'} ==0; # 0の項目の順序は無意味なので削除。 print qq(<tr>); $line{'rate'} = sprintf q(%.2f%%), $line{'WorkingSet'}/$workingSet{'_Total'}*100; if ($line{'Name'} eq '_Total') { $line{'rate'} = ''; } for (@head) { $line{$_} =~ s/\s$//; # ゴミ取り if ($line{$_} !~ /\D/) { # 数字なら桁取り。 $line{$_} =~ s/(\d)(?=(\d\d\d)+(?!\d))/$1,/g; } printf qq(<td>%s),$line{$_}; } print qq(</tr>\n); } } }}}
タイムスタンプを変更しない
___paraedit_taxtarea___
テキスト整形のルールを表示する