keima's caprice diary

気付いたことをメモのように綴ります。なるべく義務っぽくならないように気まぐれに記録します。

Windows netshで固定ipアドレスを設定

コマンド一行でPCのIPアドレスを設定したいのでやってみた(下記)。
ゲートウェイは設定しないでもOK。

C:\WINDOWS\system32> netsh interface ip set address "イーサネット 2" static 192.168.1.2 255.255.255.0

書式は【netsh interface ip set address "ネットワークアダプタ名" static [ip-address] [netmask] 】。

同じ情報を表示するにもipconfigとnetshで若干表記方式が異なるので記事にしてみた

サブネットマスクの表記方法について、「スラッシュ表記」と「オクテット表記」の違いがあるくらいかな。

netsh

C:\WINDOWS\system32>netsh interface ip show address
インターフェイスの構成 "イーサネット 2"
DHCP 有効: いいえ
IP アドレス: 10.10.10.37
サブネット プレフィックス: 10.10.10.32/28 (マスク 255.255.255.240)
インターフェイス メトリック: 1
:
(略)
:
C:\WINDOWS\system32>

ipconfig

C:\WINDOWS\system32>
イーサネット アダプター イーサネット 2:
接続固有の DNS サフィックス . . . . .:
IPv4 アドレス . . . . . . . . . . . .: 10.10.10.37
サブネット マスク . . . . . . . . . .: 255.255.255.240
デフォルト ゲートウェイ . . . . . . .:

paloalto メンテナンスモード

パロアルト (Paloalto) 機器を工場出荷状態に戻す際の手順をメモ。

再起動してすぐに、「Enter 'maint' for boot menu.」などとメッセージが表示され、「Entry:」のプロンプトが表示されたら、「maint」と入力してEnter。
すると「GNU GRUB version x.xx」と題されたメニューが表示されるので、「PANOS (maint)」を選択してEnter。
するとメンテナンスメニューに入るので、「Continue」をEnterして、初期化やIPアドレスの設定など、やりたいことを存分にするといい。

ちょうど今日、PA-3050で試したのでメモしたのであった。

Windows10のコマプロでハッシュ値を算出する方法

windows10 のコマンドプロンプトで任意のファイルのハッシュ値を生成できる。

C:\>certutil -hashfile testfile
SHA1 ハッシュ (対象 testfile):
3032f2e72bb79b32cc569773fcfcaa3ff9ee68f4
CertUtil: -hashfile コマンドは正常に完了しました。

C:\>

teraterm.ini で何も考えずにとりあえず編集する箇所

掲題の通り。Webブラウザの「お気に入りインポート」のように自分の趣向にマッチした環境設定を準備するようなもの。

 

# アプリケーション起動時のTeraterm表示位置をデスクトップの左上に固定

VTPos=3,25

 

# アプシケーション終了時のTeraterm表示位置を記憶しない(常にVTPosの値にする)SaveVTWinPos=off
SaveVTPosWinPos=off

 

# 切断(アプリケーション終了)時に確認ダイアログを表示しない

ConfirmDisconnect=off

 

 

how to convert cisco access point from mobility express mode to capwap mode in case of using cisco dna center

トラウマになりかけた経験をここにメモする。

どうやらファームウェアのバージョン等も関係していそう。

 

CiscoのAccessPoint(以下AP)にMobilityExpress(以下ME)のファームウェアをインポートしてMobilityExpress-modeとして使用した後に、集中管理型であるcapwap-modeに変更したいことがある。

コミュニティサイトによればAP上でコマンドを実行すれば切り替わるらしいけど、DNA Center(以下DNA)のPlug and Playを使用する場合は、これだけで安心すると少し困ることになる。というのも、この状態だとファームウェアはMEなので、DNAがAPを適切に認識してくれない。結果としてAPはWLCにjoinすることができない。

解決策としては、APがDNAを介さずに直接WLCにjoinし、その後APのコンフィグクリアを実行すればOK。WLCにjoinした時点でWLCがAPのファームウェアを上書きしてくれるのでDNAがAPを認識可能になる。

とこの文面だとMEのファームウェアがDNA認識不良の原因のように見えるけど、自身が検証した結果から推測したに過ぎない点に注意。Ciscoから見解をもらったりしたわけではない。

また、上記コミュニティサイトの手順でcapwap-modeに変更後、"capwap ap erase all"を実行したらPoEネゴシエートに失敗するようになった。この場合、"AP起動時modeボタン10秒プッシュ"方式によるリセットを実施し、更にcapwap-modeに変更した後にWlc-Join-WithoutDna(WJWDと勝手に命名)を実施することになる。

また、MEが入ってないAPでもPoEに失敗する事象を確認したけどそれはまだ原因不明。

 

Perl で Ping 監視

第1引数のIPアドレスPingを5回実行して全てNGだったらSlackにPostし、さらに任意の宛先にメールを送信するPerlスクリプト
メールは日本語に対応。ちなみに、Ping実行時にRTTを取得といてMRTGでグラフ化して満足する。
状況に応じて監視対象除外を設定することも可能。

Ping監視対象IPを記述したファイル:/etc/mrtg/all-address.csv(カンマ区切りで IP,名称\n(改行) という形式で対象IPの数だけ複数行に渡って記述)
Ping監視除外IPを記述したファイル:/etc/mrtg/exception-address.csv(上記と同じ形式)

スクリプトファイル名:PingPostslackSendmailg.pl

#!/usr/bin/perl
use warnings;
use LWP::UserAgent;
use HTTP::Request::Common qw(POST);
use utf8;
use Digest::MD5;
use Authen::SASL;
use Net::SMTP;
use MIME::Base64;

my $target_ip=$ARGV[0];
my $resultofping=`ping -c 5 $target_ip | grep rtt`;
my @tmp = ();
my @except = ();
my $tmp = '';
my $flag = 0;

open (IN, '/etc/mrtg/exception-address.csv') or die "$!";
while(){
  @tmp = split(/,/, $_);
  push(@except, $tmp[0]);
}
close IN;
# print "@except\n"; # for viewing
foreach $tmp (@except) {
  if( $target_ip eq $tmp ){
    $flag = 1;
  }else{
    next;
  }
}

open (IN, '/etc/mrtg/all-address.csv') or die "$!";
@tmp = ();
my $tagetname = undef;
while(){
  @tmp = split(/,/, $_);
  if ( $tmp[0] eq $target_ip ){
    $targetname = $tmp[1];
    last;
  }
}
close IN;

unless ( $flag == 1 ) {
  unless ( $resultofping =~ /rtt/ ) {
    ###### SLACK-POST
    my $url = 'https://slack.com/api/chat.postMessage';
    my %postdata = (
         'token' => 'スラックのトークンを記述',
         'text' => "\!\! Ping Unreachable \!\! Destination host : " . "$targetname" . '(' . "$target_ip" . ').',
         'username' => 'hoge',
         'channel' => 'スラックのチャンネルIDを記述',
         );
    my $request = POST( $url, \%postdata );
    my $ua = LWP::UserAgent->new;
    my $res = $ua->request($request)->as_string;
    ###### MAIL
    my $header = "From: hogehoge\@domain";
    $header .= "\nTo: fugafugat\@domain";
    $header .= "\nSubject: 件名を記述";
    $header .= "\nMIME-Version: 1.0";
    $header .= "\nContent-Type: text/plain; charset=UTF-8";
    $header .= "\nContent-Transfer-Encoding: 7bit\n";
    my $smtp = Net::SMTP->new('SMTPサーバのFQDNを記述', Port => SMTPサーバのポート番を記述号);
    $smtp->auth('SMTP認証用メールアドレスを記述', 'SMTP認証パスワードを記述');
    $smtp->to('宛先メールアドレスを記述'); # real destination
    $smtp->data();
    $smtp->datasend($header);
    $smtp->datasend("\n");
    my $body = '!! Ping Unreachable !!' . "\n\nDestination host : $targetname" . '('  . "$target_ip"  . ')' ";
    $smtp->datasend("$body");
    $smtp->quit;
  }
}
my $sp = " ";
my $slash = "/";
my @array = split(/$sp/,$resultofping);
my @array2 = split(/$slash/,$array[3]);
print $array2[1] *1000 . "\n"; # avg
print $array2[2] *1000 . "\n"; # max
my $uptime=`uptime`;
my @array3 = split(/$sp/,$uptime);
$array3[5] =~ s/,//;
print "$array3[3] . $array3[4] . $sp . $array3[5] . \n";
print "ICMP_RTT_of_$target_ip\n";