paloma blog

NWエンジニアやってます。技術の備忘など。Pythonもちょっと。タイトルは好きなカクテルから。

コマンドからteratermを起動して一発ログイン

SIer業界の作業手順書でよくあるのが

  1. teratermを起動する
  2. 宛先、パスワード入力
  3. ログイン

みたいに画面での操作手順を記載しているパターンが多いと思います。
しかし何年も業界にいると画面ポチポチも面倒になってきます。

ログインmacroを作って自動化している方もたくさんいると思いますが、
macroのメンテナンスや他の人に共有するのって意外と手間ですよね。

ターミナルから一発ログインできないかなと思い調べてみると、
やはり同じこと考える人がいて情報が存在するんですよね。

というわけで一発ログインコマンドを残しておきます。

puttyや他のソフトを使う方もいると思いますが、私の環境はteratermなので、その辺はご了承ください。

環境

私の現場は操作PCは全てWindowsなのでWindows機での操作を前提に書きます。
自宅のWindowsで試してます。

PS C:\Users\masashi\python\nwdiag> Get-WmiObject Win32_OperatingSystem


SystemDirectory : C:\WINDOWS\system32
Organization    :
BuildNumber     : 17763
RegisteredUser  : user
SerialNumber    : 00330-80000-00000-AA775
Version         : 10.0.17763



PS C:\Users\masashi\python\nwdiag> $psversiontable

Name                           Value
----                           -----
PSVersion                      5.1.17763.316
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17763.316
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

ターミナルでexeを実行

powershellからteratermのexeを呼び出します。

pathにスペースがある場合は頭に&を付けないと実行できないようです。

# &を付けないとパスが出力されるのみ
PS C:\Users\masashi> 'C:\Program Files (x86)\teraterm\ttermpro.exe'
C:\Program Files (x86)\teraterm\ttermpro.exe
PS C:\Users\masashi>
# &を付けると別windowで実行されプロンプト返ってきます
PS C:\Users\masashi> & 'C:\Program Files (x86)\teraterm\ttermpro.exe'
PS C:\Users\masashi>

オプション

公式マニュアルで必要そうなものを確認します。

https://ttssh2.osdn.jp/manual/ja/commandline/teraterm.html

シンプルにログイン情報と作業ログが取れればいいでしょう。

  • ログイン

    • IP addressまたはホスト名
    • /ssh
    • /auth=passwd # パスワード認証
    • /user=xxx
    • /passwd=xxx
  • ログ

    • ホスト名、日付があればOK
    • 変数も使えます
    • パスを指定しないとexeと同じディレクトリに書かれるのでhomeに指定します
    • ホスト名の変数でexe実行と同じ&を使うので""で挟みます
    • /L="$HOME&h-%Y%m%d.log"

実践

上記をまとめたものがこちらです。
完全LAN環境ですが一応パスワードは隠しますw

1行だと長くなってしまうので改行します。
powershellだとバッククォートの記号を使うようです。

PS C:\Users\masashi> & 'C:\Program Files (x86)\teraterm\ttermpro.exe'  `
/ssh 192.168.0.13 /auth=password `
/user=masashi /passwd=<password> /L="$HOME\&h_%Y%m%d.log"

GIFとかで操作画面が取れればよかったのですが、やり方がわからないのでターミナル越しに結果残します。

結果

PS C:\Users\masashi> ps -name ttermpro
ps : 名前 "ttermpro" のプロセスが見つかりません。プロセス名を確認し、コマンドレットを再度呼び出してください。
発生場所 行:1 文字:1
+ ps -name ttermpro
+ ~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ObjectNotFound: (ttermpro:String) [Get-Process], ProcessCommandException
    + FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand

# プロセスが無いのでエラーで返ってきています。
PS C:\Users\masashi> & 'C:\Program Files (x86)\teraterm\ttermpro.exe'  `
/ssh 192.168.0.13 /auth=password `
/user=masashi /passwd=<password> /L="$HOME\&h_%Y%m%d.log"
PS C:\Users\masashi> ps -name ttermpro

Handles  NPM(K)    PM(K)      WS(K)     CPU(s)     Id  SI ProcessName
-------  ------    -----      -----     ------     --  -- -----------
    292      25    11040      26664       1.55  12612   1 ttermpro

# teratermが上がっています。
PS C:\Users\masashi> ls *.log


    ディレクトリ: C:\Users\masashi


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2019/04/07     15:03            511 192.168.0.13_20190407.log
-a----       2019/01/05     12:39              0 geckodriver.log #このファイルは今回関係ないです


PS C:\Users\masashi> cat .\192.168.0.13_20190407.log
Welcome to Ubuntu 16.04.3 LTS (GNU/Linux 4.4.0-119-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

128 個のパッケージがアップデート可能です。
1 個のアップデートはセキュリティアップデートです。

New release '18.04.2 LTS' available.
Run 'do-release-upgrade' to upgrade to it.


*** システムの再起動が必要です ***
Last login: Sun Apr  7 14:57:15 2019 from 192.168.0.12
masashi@ubuntu:~$
PS C:\Users\masashi>
PS C:\Users\masashi>

ログファイルもちゃんと作られていて、バナー表示のログも出力されていますね。
このサーバは2017年に作ったので18.04LTSへの通知が来ています。
しかし録画サーバなのでアップデートは悩ましいところですw

というわけでターミナルからの一発起動ログインができるようになりました。

macroゴリゴリ書いての起動も気持ちいいですが、お手軽ワンライナーログインもなかなかいいもんです。

参考サイト

PowerShellで外部プログラムを実行する - bakemoji |> log

コマンドプロンプトからTeratermで自動ログインを行う(マクロ不要) | 俺的備忘録 〜なんかいろいろ〜

nwdiagで自宅ネットワーク構成図を自動アップデート

久しぶりに記事書きます。
先月は積んでいたゲームをしたらハマってしまいずーっとプレイしてました。
プレイ日記を以前構築したwordpressに細々と書いていますが、少なくてもアクセスがあると嬉しいですね。
でもこっちのブログのほうがアクセス数は多いですw


先月末か今月頭か忘れましたが、本屋でこの本を見つけてジャケ買いしてしまいました。

ハッキング・ラボの作り方

セキュリティの勉強したかったのと、教科書的な仮想環境の作り方を見たかったというわけです。

内容はKaliLinuxを使って脆弱性サーバを攻撃してみようというものです。
仮想環境はVirtualBOXを使います。

自作サーバをまだ買えていないので、とりあえずはサブ用で買ったノートPC内に環境を作ってみました。

仮想環境はVMware Workstationで作ろうと考えていましたが、
無料版だと仮想ネットワークの構築が柔軟にできなさそうなのでVirtual Boxのほうがいいかもしれませんね。

Workstation Pro版買ってもいいんですが、結構お値段するんですよね。
ここにお金をかけるべきか迷うところです。

仮想環境構築

本に倣って構築しています。
詳細は本に書いてあるので割愛します。

Hyper visorはVirtual Box 6.0.4 r128413 (Qt5.6.2) です。

Kali Linuxは2NICでNATモードとHost Only Adapterを使います。

  • NATモード

    • Internet用
  • Host Only Adapter

    • ローカルLAN用

ローカルLANにはWindows7,10やmetasploitableサーバなんかを置いてKaliからハッキングしていくという流れです。 今後サーバを増やす時もローカルLAN内に増やしていくことになります。

構成図

本に構成図は書いてあるんですが、環境は自分で管理するべきですよね。
ハッキングラボの構成図を作ろうと思いますが、家で図面を作るのも大変で嫌ですよね。

なので以前作ったnwdiagの構成図がありますのでこれをアップデートしようと思います。
nwdiagでNW構成図を自動生成 - paloma blog

以前の環境はこちら。
Linuxだと背景が市松になるのでWindowsでアウトプットし直してます。

  • ソース
nwdiag {

  Internet [shape=cloud]
  Internet -- RT
  
  network HomeNW {
      address = "192.168.0.0/24"

      RT [address = "192.168.0.1"];
      Windows10 [address = "192.168.0.23"];
      Ubuntu18.04 [address = "192.168.0.10"];
      TVRecodeSV [address = "192.168.0.13"];
      RaspberryNAS [address = "192.168.0.19"]
  }
}
  • 構成図

f:id:paloma69:20190321203849p:plain

うーん、シンプルw

ネットワーク設計

自宅のセグメント用途はこんな感じです。

  • 192.168.0.0/24
    • デスクトップ用ネットワーク
  • 10.0.0.0/24
    • 検証マシン用ネットワーク
  • Virtual BOX NATネットワーク
    • Virtual Boxの挙動が不明なのでIPアドレス設計ができませんが、 このセグメント体も存在します

セグメントが少ないですが、自宅環境としてはこんなもんでしょう。

また、metasploitableとwordpressは未構築ですが、とりあえず設計ということで。

diagファイルアップデート

  • ソース
nwdiag {

  Internet [shape=cloud]
  Internet -- RT
  
  network HomeNW {
      address = "192.168.0.0/24"

      RT [address = "192.168.0.1"];
      Windows10 [address = "192.168.0.23"];
      Ubuntu18.04 [address = "192.168.0.10"];
      TVRecodeSV [address = "192.168.0.13"];
      RaspberryNAS [address = "192.168.0.19"];
      Win10Note [address = "192.168.0.12"]
  }

  network NATNW {
      Win10Note ;
      kali ;
      
  }

  network VirtualboxNW {
      address = "10.0.0.0/24"

      Win10Note [address = "10.0.0.1"];
      DHCPSV [address = "10.0.0.100"];
      kali [address = "10.0.0.2"];
      metasploitable [address = "10.0.0.3"];
      wordpress [address = "10.0.0.4"];
  }

}

nwdiagは自動描画できますが、インプットファイルは作成しなければいけません。
(結局自動じゃないけど許してね。ファイルの自動生成まではまだ作りこめません)

アウトプット

実行環境はこちら

  • OS
PS C:\Users\masashi\python\nwdiag> Get-WmiObject Win32_OperatingSystem


SystemDirectory : C:\WINDOWS\system32
Organization    :
BuildNumber     : 17763
RegisteredUser  : user
SerialNumber    : 00330-80000-00000-AA775
Version         : 10.0.17763



PS C:\Users\masashi\python\nwdiag> $psversiontable

Name                           Value
----                           -----
PSVersion                      5.1.17763.316
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.17763.316
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

PS C:\Users\masashi\python\nwdiag> python --version
Python 3.7.2
PS C:\Users\masashi\python\nwdiag> python -m pip list | findstr nwdiag
You are using pip version 18.1, however version 19.0.3 is available.
You should consider upgrading via the 'python -m pip install --upgrade pip' command.
nwdiag              1.0.4

コマンド一発!
ファイル名を指定しなければdiagファイルの名前が付きます。

> nwdiag .\home.diag

今回のアップデートでこんなになりました。

f:id:paloma69:20190321204255p:plain

ノードは少ないですがグッとネットワーク構成図っぽくなりましたね。

今後やりたいこと

  1. diagファイルをGithubに上げて管理する
  2. Kaliを使ってセキュリティの勉強をする
  3. 自宅環境にサーバ(物理マシン)を導入する

仮想環境内にpfsense等の仮想ルータを環境内に入れたいのと、
サーバを買ってGuestの引っ越しをしたいです。
資金はあるんですが、安くはない買い物なのでなかなか踏ん切りがつきません…。

python製英英辞書"pyvoc"がいい感じ

我々エンジニアは英語のマニュアルを読む場面が多々ありますが、私なんか翻訳ツールに頼ってしまいます。
とは言っても全く読めないわけではなく、わからない単語が数個出てきたのでついでに文ごと翻訳かけるって言うやり方です。

そんな折、ostechnixでpyvocなるツールを見つけました。
いわゆる英英辞典です。

www.ostechnix.com

helpを調べる"pydoc"じゃないですよ、"pyvoc"です。
cli辞書&ボキャブラリビルドツールとありますね。

非ネイティブ英語スピーカーの学習に使えるようなツールのようです。

オックスフォードの辞書APIを使用しているようです。

インストール

年末に買った持ち運びに便利なノートPC(Windows10 Pro)にインストールしてみます。
このPCにはWSLもインストール済みですが、気軽に使えるようwindows側にインストールします。

pythonは3.7.2をインストール済み。
powershellから実行します。

PS C:\Users\masashi> python --version
Python 3.7.2

インストールはpipで一発。
windowsだとpipモジュールを呼び出して実行します。

PS C:\Users\masashi> python -m pip install pyvoc
Collecting pyvoc
  Downloading https://files.pythonhosted.org/packages/7c/34/15b2e3bce4d04d8e41dffe563f441330bff9bb526e25e45e337482826639/pyvoc-1.1.0-py3-none-any.whl

()

Successfully installed colorama-0.4.1 pyvoc-1.1.0 termcolor-1.1.0

OK。

さっそく"python"でも引いてみます。
初回はAPI Keyのセッティングが走ります。

PS C:\Users\masashi> pyvoc python
 -Creating necessary config files
 -getting api keys. please handle with care!
 \

python
Noun:            large heavy-bodied non-venomous snake occurring throughout Old World tropics
example:         None

品詞と例を表示してくれるのがいいですね。
Nounは名詞です。
"python"だと例はないようです。

"古くから熱帯地方に生息する非毒性の大型の蛇"とでも訳せますかね…?
違ってたら恥ずかしいです。

プログラミング言語としての役は入って無い様ですね。

意味も英語で表示されるので、調べていくうちに言い回しの勉強も出来そうです。
再帰的に調べていったら収集つかなくなりそうですね。

いくつか単語を調べましょう。
好きなバイク関係でも。

PS C:\Users\masashi> pyvoc motircycle
 \
No definition found. Please check the spelling!!
PS C:\Users\masashi> pyvoc motorcycle
 |

motorcycle
Noun:            two-wheeled vehicle that is powered by motor and has no pedals
example:         None

PS C:\Users\masashi> pyvoc vehicle
 \

vehicle
Noun:            thing used for transporting people or goods
example:         the vehicle was sent skidding across the road

PS C:\Users\masashi>
PS C:\Users\masashi> pyvoc bike
 |

bike
Noun:            bicycle or motorcycle
example:         I'm going by bike

Verb:            ride bicycle or motorcycle
example:         Danny bikes to the park and back every day

いいですね。しかもコマンドなんで早いし、サクッと調べられます。
"Verb”は動詞です。

ボキャブラリーグループ

どういう括りかわかりませんが、ボキャブラリーグループというのがあって単語をグルーピングしてあるみたいです。

-aオプションで自分でも辞書を追加できるみたいですが、このグループの内容がよくわかっていません。

ホームディレクトリにはデフォルトでそれっぽいファイルが作成されています。

PS C:\Users\masashi> ls C:\Users\masashi\.pyvoc\


    ディレクトリ: C:\Users\masashi\.pyvoc


Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       2019/01/22     23:23              2 all_words.json
-a----       2019/01/22     23:23              9 defaultgroups.json
-a----       2019/01/22     23:23          68023 group101.json
-a----       2019/01/22     23:23          66113 group102.json
-a----       2019/01/22     23:23          60768 group103.json
-a----       2019/01/22     23:23              2 group51.json
-a----       2019/01/22     23:23          47059 options.json
-a----       2019/01/22     23:23             72 pyvoc.config
-a----       2019/01/22     23:23              2 usergroups.json

改定

グループを指定して-rオプションで内容を改定?できるんですかね。
この辺はいじってませんがEnterを押すと単語がどんどん出てきます

PS C:\Users\masashi> pyvoc 101 -r
 |

 Press <enter> for next. q<enter> to exit

balk           a roughly squared timber beam
1. >

connecting     joining or linking things together
2. >

ennui          feeling of listlessness and dissatisfaction arising from lack of occupation or excitement
3. >

avenge         inflict harm in return for
4. >

vex            angry; annoyed
5. >

motivation     a reason or reasons for acting or behaving in a particular way
6. >

クイズ

グループ指定でーqオプションで4択クイズもできます。

途中でやめちゃいましたが、10問クイズが出ます。

PS C:\Users\masashi> pyvoc 101 -q 10
 |
                Starting Quiz

1 point for every correct answer. q<enter> to exit


emend
[1] make corrections and revisions to (a text)
[2] a written character that represents a syllable
[3] a person who is proficient
[4] joint in legs of animals, equivalent to knee in humans
1.>
enter a valid integer[1, 2, 3, 4]. q<enter> to exit
1.> 1
correct answer

forlorn
[1] pitifully sad and abandoned or lonely
[2] recurring every seven years.
[3] archaic variant of wizened
[4] (of a person or action) showing dedication and diligence
2.> 2
wrong answer

impudent
[1] the action of suppressing something such as an activity or publication
[2] give or make a long, high-pitched complaining cry or sound
[3] not showing due respect for another person; impertinent
[4] archaic variant of wizened
3.>

早くて楽しいツールです

コマンドでサクサク検索できるので、ストレスもなく楽しいツールです。
これを使って英語勉強ライフを進めていきたいと思います。

pyvocは初期開発らしくてこれからの機能追加が楽しみですね。

ちなみにオックスフォード辞書APIのサイトを見たら、フリーアカウントだと月3000リクエストの制約があるようですが、このツール経由だとどうなるんですかね。

developer.oxforddictionaries.com

使っていけばわかるか。

WordpressをLet's EncryptでHTTPS化した

世の中のWebサイトはHTTPSが主流となっていますので、自分のサイトもそろそろHTTPS化しようと思い実施しました。

認証局どうすっかなあと思っていたところDegital OceanにHow toがあったので、Let's Encryptにしました。
無料だし、助かります。

www.digitalocean.com

ちなみにサーバにログインするとこんなバナーも出ます。

If you'd like to use Let's Encrypt to create an SSL for this site,
please see: http://do.co/le-apache for instructions

ついにHTTPS化に手を出す

手順に沿って設定

masashi@wordpress-s-1vcpu-1gb-sgp1-01:~$ sudo add-apt-repository ppa:certbot/certbot
masashi@wordpress-s-1vcpu-1gb-sgp1-01:~$ sudo apt-get update
masashi@wordpress-s-1vcpu-1gb-sgp1-01:~$ sudo certbot --apache -d dayoff.palomablog.com

サーバネームも設定済みです。

masashi@wordpress-s-1vcpu-1gb-sgp1-01:~$ sudo find /etc/apache2/* -type f | xargs grep ServerName
/etc/apache2/sites-available/000-default.conf: ServerName dayoff.palomablog.com
/etc/apache2/sites-available/000-default.conf.dpkg-dist:   # The ServerName directive sets the request scheme, hostname and port that
/etc/apache2/sites-available/000-default.conf.dpkg-dist:   # redirection URLs. In the context of virtual hosts, the ServerName
/etc/apache2/sites-available/000-default.conf.dpkg-dist:   #ServerName www.example.com

これだけ。

  • CSR書いて、
  • 認証局から購入して、
  • サーバの証明書パス書いて…

といった作業は一切なく、コマンド数発で完了です。
認証の際にLet's Encryptのサーバからドメイン名の名前解決ができることが条件のようなので、ワイルドカードとかはできなさそうです。

  • palomablog.comの証明書も入れておこうと思たらエラーになった。
 masashi@wordpress-s-1vcpu-1gb-sgp1-01:~$ sudo certbot --apache -d palomablog.com -d dayoff.palomablog.com
Saving debug log to /var/log/letsencrypt/letsencrypt.log
Plugins selected: Authenticator apache, Installer apache
Enter email address (used for urgent renewal and security notices) (Enter 'c' to
cancel): smasa619@gmail.com
Starting new HTTPS connection (1): acme-v02.api.letsencrypt.org

()

(Y)es/(N)o: y
Starting new HTTPS connection (1): supporters.eff.org
Obtaining a new certificate
Performing the following challenges:
http-01 challenge for dayoff.palomablog.com
http-01 challenge for palomablog.com
Waiting for verification...
Cleaning up challenges
Failed authorization procedure. palomablog.com (http-01): urn:ietf:params:acme:error:unknownHost :: The server could not resolve a domain name :: No valid IP addresses found for palomablog.com

IMPORTANT NOTES:
 - The following errors were reported by the server:

   Domain: palomablog.com
   Type:   unknownHost
   Detail: No valid IP addresses found for palomablog.com

   To fix these errors, please make sure that your domain name was
   entered correctly and the DNS A/AAAA record(s) for that domain
   contain(s) the right IP address.
 - Your account credentials have been saved in your Certbot
   configuration directory at /etc/letsencrypt. You should make a
   secure backup of this folder now. This configuration directory will
   also contain certificates and private keys obtained by Certbot so
   making regular backups of this folder is ideal.

Let's Encryptの有効期限は90日なので期限切れまでに更新が必要なのですが、これも大丈夫かな?

本来はcronに書いておくらしいのですが、これたたけばOKらしいです。

masashi@wordpress-s-1vcpu-1gb-sgp1-01:~$ sudo certbot renew --dry-run

インストールしたcertbotがsystemdタイマーを使ってrenewを1日2回実行してくれる、と書いてありますね。

不具合は期日が来てみないとわかりませんね。
(ログ見れば確認できそうですが別途)

httpからのリダイレクトをONにするかとあったので、有効にしておきました。
本当は不要となる80ポートは閉じるべきですが、影響が見切れず、壊れるのも嫌なので一旦ONにしています。

Please choose whether or not to redirect HTTP traffic to HTTPS, removing HTTP access.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
1: No redirect - Make no further changes to the webserver configuration.
2: Redirect - Make all requests redirect to secure HTTPS access. Choose this for
new sites, or if you're confident your site works on HTTPS. You can undo this
change by editing your web server's configuration.
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Select the appropriate number [1-2] then [enter] (press 'c' to cancel): 2
Redirecting vhost in /etc/apache2/sites-enabled/000-default.conf to ssl vhost in /etc/apache2/sites-available/000-default-le-ssl.conf

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Congratulations! You have successfully enabled https://dayoff.palomablog.com

アクセスしてみる

アクセスしてみたところ、レイアウトが崩れてしまいました。 f:id:paloma69:20190110112022p:plain

サーバが参照するパスも変えないといけないのでそりゃそうですね。
URLをHTTPSに変更。 f:id:paloma69:20190110112244p:plain

画像周りのパスは特に変えなくても動きに問題ありませんでしたが、これはリダイレクトが効いているのかな? ちなみに画像拡大の処理が遅いのもこれが怪しいですね。

とりあえず無事にHTTPS化できてよかったです。
(と思ったら、ヘッダ画像が表示されていない…後で直します) f:id:paloma69:20190110113529p:plain

コマンド数ステップで簡単でした

個人の趣味サイトだからできることですが、Let's Encryptを使って無料かつ簡単に証明書取得&配置ができました。
今どきのVPSはこういう作業も自動化で便利にできるようになっていますが、
だからこそ仕組みを知っておかないとトラブル時に対処できなくなってしまいますね。

Wordpressのローカル開発環境をDuplicatorでつくる

あけましておめでとうございます。

昨年をいろいろ振り返りたい思いはありますが、

とりあえず本年一発目のエントリです。


昨年Degital oceanのVPSを契約しましてゲーム日記など細々書いています。

プレイ中の画像も載せているのですが、サイズが小さく拡大機能もないのでちょっとデザインを変更することにしました。

とは言っても本番一発勝負は怖いのでローカル開発環境を作ります。

Wordpressの複製はいろんな方法がありますが、Duplicatorというプラグインが簡単そうだったのでこれで複製することにしました。 design-plus1.com

まずはSnapshot取得

プラグイン入れるので万一の際戻せるようにSnapshot取っておきます。 手順に沿ってマシンをHalt。

www.digitalocean.com

Snapshotボタンをポチ。 f:id:paloma69:20190108233207j:plain

これで完了。(リストア試験ができていませんが、マシンが一機しかないのでそのときが来るまで放っておきます)

ローカル開発環境

帰省中に弄くっていた買ったばかりのノートPC上に作ります。

ローカル環境は * VMware Workstation * Turnkey Linux Wordpress OVA で一発で構築します。

VPSUbuntuでローカルがDebianというインフラ屋にあるまじき環境の作りですが、 プラグインの導入手順が確認できればよいので今回はこれでいいことにします。

Duplicator インストール 本番機

プラグインからDuplicatorをインストール。 インストール後、Create NewでArchiveを作成します。 f:id:paloma69:20190108234543p:plain

Archve作成後はinstaller.phpとzipファイルをダウンロードします。 f:id:paloma69:20190108234651p:plain

Duplicator インストール ローカル機

ローカルのWordpressにも同じくDuplicatorをインストールします。 インストール後は本番機からダウンロードしたinstaller.phpとzipファイルをローカルWordpressのパスに配置します。

配置後はブラウザからinstaller.phpにアクセス。 Duplicatorの画面が現れます。 f:id:paloma69:20190108234846p:plain フォームに沿って入力。

DBの接続もOKです。 f:id:paloma69:20190108234942j:plain

サイト名も変更できるので、間違えないように -local- という名前を足しておきます。 f:id:paloma69:20190108235110p:plain

あとは開発環境にログインしてみます。 f:id:paloma69:20190108235128p:plain

OK!クローンができました。 f:id:paloma69:20190108235159p:plain

ローカル環境をいじる

アクセス解析してみようとJetpackも入れたのですが、サーバのクローンだとマスターのサーバしか使えないみたいですね。 まあいいでしょう。

  • 画像サイズ変更

投稿時に画像を中サイズにしていましたが、小さすぎるので大サイズにしました。 HDフルサイズもできるのですが、拡大機能をつけるので大にしておきます。

  • 拡大機能追加

画像拡大もEasy Fancyboxというプラグインで簡単にできるそうです。

techacademy.jp

画像選択時に「メディアファイル」に設定すれば拡大できるようになります。
すごい仕組みですね。どうやっているんでしょうか。
JavaScriptがどうのってどこかに書いてあった気がしますが、時間があればソースを見てみようと思います。

というわけで本番機の画像周りを変更しました

ローカル環境の変更いじりらへんは割愛しまして、
そのまま同じ手順で本番機の変更を行いました。

GTAオンラインというゲームの物件サイト購入画面なんですが、拡大して見れるようになりました。
最近のゲームはゲーム内にもウェブがあったりと非常に凝ってます。

ちなみにこの時飛行機格納庫を購入しましたw f:id:paloma69:20190108235620p:plain

拡大できるようになるとブログの振り返りが楽しくなりますね。


長いこと直したかった画像周りをようやく直せました。
この時同時にHTTPS化もしたので、その辺は次回書きたいと思います。

ノートPCを買った -HP EliteBook Folio 1020 G1-

気づけば11月、12月は一回もエントリを書いていませんでした。
炎上気味の案件に巻き込まれてしまい、記事を書く気力がなく今年最終日となってしまいました。
まあ、ずっとGTAオンラインをやっていたというのもあるのですが…。

買ったもの

帰省や数泊の旅行に行く時のお供としてタブレットは持って行ったのですが、物足りなくてノートPCが欲しいと思っていました。
この度ようやくいい感じのやつを購入できました。

持ち歩くため小さいのがいいので、

  • 10~11インチ
  • 薄い
  • かっこいい

という条件で探していました。

そんな中Twitterでこんな情報が流れてきました。

12.5インチとちょっと画面が大きそうですが、8GBというのはうれしいですね。
仮想マシンもいくつか動かせそうです。 CPUはInter Core M-5Y71 1.20GHzという省電力系のCPUのようです。 あまり知らない方版ですが、今日日のCPUは問題ないでしょう。4コアだし。

また、金属ボディも金属でスタイリッシュ&頑丈そうです。

jp.ext.hp.com

というわけでTweetを発見したその日に秋葉原まで買いに行きました

実物はこんな感じ

f:id:paloma69:20181231215043j:plain

f:id:paloma69:20181231215106j:plain

そんなに大きくなくいいですね。

本当はThinkpadのXシリーズを狙っていたのですが、
実物を見てThinkpad(X240)が意外と分厚かったのと、こちらの金属ボディに惹かれてこっちを購入してしまいました。

使ってみた感じとしては動作も遅くなく、普通のノートPCといった感想です。 キーボードのレイアウトも普通で特に使いづらいところはないですね。

この機種は発売の記事を見ると2014~2015年頃のモデルなんですかね?
バッテリーもへたってなくてまだ6~7時間は持ちそうです。

このブログ記事も購入したPCで書きました。
これから旅先ではこいつを使っていろいろ触りたいですね。

ノートPCといえばMac Bookの小さいのが最高にかっこいいと思いますが、
いつか買う日を夢見てしばらくこの子で頑張ります。

冬のボーナスで今度こそ自宅サーバを買うつもりでしたが、ノートPCを買ってしまいました。 まあ、これも中古なんでまだ予算はあるんですけどね…。

nwdiagでNW構成図を自動生成

日付変わって10月最終日です。
今月全然記事書いてない!
というわけで最終日に1つ書きます。


本ブログはNWエンジニアの技術ブログとして始めましたが、業務の関係上設計や資料の持ち出しがNGでNW関連のことがあまり書けませんでした。
そんな中やっとNW系で面白そうなものを発見しました。

nwdiag

ブロック図生成ツール blockdiag — blockdiag 1.0 ドキュメント

python製の自動ブロック図生成パッケージです。
NW構成図のほかにも別タイプの描画ができるようです。

最近NW界隈でもConfigのオートメーションとか色々話題に出ていますが、構成図も自動で作れたら楽ですよね。

今の現場は担当しているシステムの規模も大きく、担当がはっきり分かれており構成図もNW屋の成果物となっています。
(SIはどこもそうかもしれないけど)

SIerだとvisioで書くのが主流ですかね。
PJみんなで共有する資料になるので、なるべくかっこよく書かなければいけません。 見栄え上線の傾き、オブジェクト位置のずれなども気にする必要があります。

しかしnwdiagを使えば自動でいい感じに生成できるので試してみます。

インストール

サブ機ubuntu desktopにいれます。

masashi@PC-ubuntu:~$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 18.04.1 LTS
Release:    18.04
Codename:   bionic

専用コンテナ立てるか…とおもったけどサーバでもないしわざわざ作らなくてもいいかな。

というわけでpython仮想環境にインストール

masashi@PC-ubuntu:~$  python3 -m venv homenwdiag
masashi@PC-ubuntu:~$ 
masashi@PC-ubuntu:~$ cd homenwdiag/
masashi@PC-ubuntu:~/homenwdiag$ source bin/activate
(homenwdiag) masashi@PC-ubuntu:~/homenwdiag$ 
(homenwdiag) masashi@PC-ubuntu:~/homenwdiag$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (o
r define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
pip (9.0.1)
pkg-resources (0.0.0)
setuptools (39.0.1)

公式に前提パッケージが乗っていますが、pipで一緒に入るようです。

(homenwdiag) masashi@PC-ubuntu:~/homenwdiag$ pip install nwdiag
Collecting nwdiag
  Downloading https://files.pythonhosted.org/packages/8e/06/42e672cc4b0efddd40f0c0de412dda7c29f8a971afb54b3d77579c
28aa29/nwdiag-1.0.4-py2.py3-none-any.whl (7.7MB)(homenwdiag) masashi@PC-ubuntu:~/homenwdiag$ pip list
DEPRECATION: The default format will switch to columns in the future. You can use --format=(legacy|columns) (o
r define a format=(legacy|columns) in your pip.conf under the [list] section) to disable this warning.
blockdiag (1.5.4)
funcparserlib (0.3.6)
nwdiag (1.0.4)
Pillow (5.3.0)
pip (9.0.1)
pkg-resources (0.0.0)
setuptools (39.0.1)
webcolors (1.8.1)

これで準備OK。

自宅環境を書いてみる

そろそろdraw.ioでも使って自宅環境書くかーと思っていたところ、

という素晴らしい要素がそろっていたので、これでメンテしていきます。
as codeとしてバージョン管理できるしね。

インプットファイルを書く

diagファイルに書いてコマンドでアウトプットします。

  • home.diag
nwdiag {

  Internet [shape=cloud]
  Internet -- RT
  
  network HomeNW {
      address = "192.168.0.0/24"

      RT [address = "192.168.0.1"];
      Windows10 [address = "192.168.0.23"];
      Ubuntu18.04 [address = "192.168.0.10"];
      TVRecodeSV [address = "192.168.0.13"];
      RaspberryNAS [address = "192.168.0.19"]
  }
}

出力!

nwdiagコマンドで出力します。
オプションはいろいろありますが、困るまではデフォルトで行きます。

(homenwdiag) masashi@PC-ubuntu:~/homenwdiag$ nwdiag home.diag 
(homenwdiag) masashi@PC-ubuntu:~/homenwdiag$ ll
合計 60
drwxr-xr-x  6 masashi masashi  4096 1031 00:51 ./
drwxr-xr-x 42 masashi masashi 16384 1031 00:51 ../
drwxr-xr-x  2 masashi masashi  4096 1031 00:20 bin/
-rw-r--r--  1 masashi masashi   331 1031 00:51 home.diag
-rw-r--r--  1 masashi masashi 12769 1031 00:52 home.png  # これが出力される
drwxr-xr-x  2 masashi masashi  4096 1031 00:20 include/
drwxr-xr-x  3 masashi masashi  4096 1031 00:20 lib/
lrwxrwxrwx  1 masashi masashi     3 1031 00:20 lib64 -> lib/
-rw-r--r--  1 masashi masashi    69 1031 00:20 pyvenv.cfg
drwxr-xr-x  3 masashi masashi  4096 1031 00:20 share/

開いてみる

Linuxだと透明色は市松模様で出るらしくちょっと見にくいですね。
背景色の記述がなく変更方法がわかりませんでした。
Windowsで試したときは背景白で綺麗に見えたのですが・・・。

自分用にはギリ許容できますが、人様に見せるには色とフォントを改良する必要がありますね。

f:id:paloma69:20181031005352p:plain

それにしてもセグメントすくねーw
図面に起こすレベルじゃないですねw

お恥ずかしながらNWエンジニアの身であるにも関わらず自宅環境は1セグメントしかありません。
しかもISPのレンタルルータのみという体たらく。
主要マシンにしかAnti Virusは入れてないので、この環境にウイルス入っちゃったらやばいですね。

いいわけ

サーバ環境やpythonに興味が移っているだけで、
家でOpenflow走らせるとか、VXLAN使いたいとか野望はあるんですよ。

NW機器って単体だけだと役に立たないんで、最低でもルータ、スイッチの2台は無いといけません。
冗長構成組みたいならその倍・・・。

でもNW機器買うならサーバとかにお金使いたいよね。
ルータも仮想ルータで事足りるし。

今静音サーバ購入を検討中なので、サーバ買ったら仮想NWをバンバン作ろうと思います。

感想

NW構成図を自動で生成できるということですごい便利なツールだと思いますが、
ファイルの記述法はそんなに難しくなく、さくっと図が作れてしまいました。

大規模NW等をこれで制御するのは難しそうですが、小規模オフィスとかなら十分間に合いそうです。

急成長企業など、設計が追いつかなくて複雑になってしまったNW環境のconfigからIPを抜いて、
これで再作成してドキュメントの答え合わせみたいな使い方もできそうです。

今日はnwdiagコマンドだけですが、別のコマンドで別のブロック図が作れるようなので、また時間があれば試してみたいと思います。

こういう可視化のツールを作れる人は本当に天才だと思います。私は頑張ってもこの領域には届かなそう。