Contents
- フロアマネージャーに導入すると便利なツール達
- 1.概要
- 2.便利なコマンドたち
- 2-1. アプリのアップデートと消去
- 2-2. ディレクトリ名を英語に変更
- 2-3. net-toolsのインストール:ifconfigを使用可能にします。
- 2-4. 時刻確認/設定: timedatectl, sytemed-timesyncd.service
- 1)現状の時刻設定状況の確認
- 2) 時刻の同期先を、ntp.nict.jpに変更
- 2-5. シリアルポート・ターミナルソフト:GTKTerm
- 2-6. Ubuntuのバージョン確認
- 2-7. Ubuntuのカーネルバージョン確認
- 2-8. OSの対応ビット長を調べる
- 3.便利なツール達
- 3-1. ファイアウォールの設定:ufw(Uncomplicated Firewall)
- 1) ufwの動作開始/動作停止
- 2) ルールの追加
- 3) ルールの削除
- 4) ログファイル
- 5) Node-RED用のファイアウォール設定
- 3-2. ssh, sftp:open-ssh
- 1) open-sshのインストール
- 2) ファイアウォール(ufw)の設定
- 3) Windowsからの接続確認
- 4) Raspberry Pi 4(PDH)からの接続確認
- 3-3. ファイルの共有:sambaの導入
- 1) sambaのインストール
- 2) 共有フォルダの設定
- 3) ファイアウォール(ufw)の設定
- 4) 動作の確認
- 3-4. リモートデスクトップ接続とVNC接続:Ubuntu 22.04 LTS 新機能
- 1) Ubuntuの設定
- 2) ファイアウォールの設定: リモートデスクトップ
- 3) ファイアウォールの設定: VNC
- 4) リモートデスクトップを使ったWindowsからの接続
- 6) VNC 接続時ブラック画面対応
- 3-5. x11vncのインストール
- 1) 概要
- 2) ディスプレイマネージャの変更
- 3) x11vncのインストール
- 4) 認証用のパスワードファイルの作成
- 5) ファイアウォールの設定
- 6) vncの動作試験
- 7) x11vncの自動起動の設定
- 8) vnc Viewerからの動作確認
- 3-6. Python3の最新版のインストール
- 1) 概要
- 2) Ubuntu 22.04 LTSのバージョン確認
- 3) 最新版のPythonのバージョン確認とダウンロード
- 4) ダウンロードしたファイルの解凍
- 5) コンパイルに必要な環境設定
- 3-7. Visual Studio Codeのインストール
- 1)Visual Studio Codeのダウンロード
- 3) Visual Studio Codeの起動
- 4) Pythonの開発環境の導入
- 5) Pythonのプログラム用フォルダの作成
- 6) Pythonプログラムの作成と実行
- 3-8. nmapの導入
- 3-7-1.概要
- 3-7-2.インストール
- 3-7-3.使用方法
- 3-9. HTTPサーバソフトapache2のインストール
- 1) 概要
- 2) apache2のインストール
- 3) ファイアウォールの設定
- 4) 起動の確認
- 3-10. バイナリファイルとテキストファイルの変換コマンド(uuencode/uudecode)の導入
- 1) ツールの概要
- 2) インストール
- 3) 使用法
フロアマネージャーに導入すると便利なツール達
1.概要
古いWindows PCにUbuntuをインストールして、Floor ManagerやEdge Serverとする際に、少し知っておくと便利なコマンドやツール達を紹介します。
1) 紹介しているコマンド
2-1. アプリのアップデートと消去
2-2. ディレクトリ名を英語に変更
2-3. net-tools:ifconfigなど
2-4. 時刻確認/設定: timedatectl, sytemed-timesyncd.service
2-5. シリアルポート・ターミナルソフト:GTKTerm
2-6. Ubuntuのバージョン確認
2-7. Ubuntuのカーネルバージョン確認
2) 紹介しているツール
3-1. ufw(Uncomplicated Firewall)
3-2. ssh, sftp:open-ssh
3-3. ファイルの共有:sambaの導入
3-4. リモートデスクトップ接続とVNC接続
3-5. x11vncのインストール
3-6. Python3の最新版インストール
3-7. Visual Studio Codeのインストール
3-8. nmapの導入
3-9. HTTPサーバソフトapache2のインストール
3-10.バイナリファイルとテキストファイルの変換コマンド(uuencode/uudecode)の導入
2.便利なコマンドたち
2-1. アプリのアップデートと消去
1) sudo apt –y update
2) sudo apt –y upgrade
3) sudo apt –y autoremove
4) sudo apt autoclean
apt updateで更新リストを作成し、apt upgradeで更新を行います。
apt autoremove で不要になったファイルを削除します。さらに、apt autoclean で不要ファイルを削除します。
2-2. ディレクトリ名を英語に変更
ルートの下のフォルダ名をカタカナから英語に変えます。例えば、デスクトップをDesktopに、ダウンロードをDownloadsに変更します。
1)sudo apt –y install xdg-user-dirs-gtk
2)LANG=C LC_ALL=C xdg-user-dirs-gtk-update
ポップアップが現れるので、“Don’t ask me this again”にチェックを入れて、“Update Names”をクリックします。
2-3. net-toolsのインストール:ifconfigを使用可能にします。
sudo apt install –y net-tools
net-toolsインストール後に、ifconfig を実行するとipアドレスとMACアドレスが表示されます。
2-4. 時刻確認/設定: timedatectl, sytemed-timesyncd.service
Ubuntuで時刻確認は、timedatectl コマンドが使用できます。また、時刻合わせには、systemd-timesyncd.serviceが実行されています。
1)現状の時刻設定状況の確認
timedatectl で、現在の日時と時刻同期が実行されているかどうかが確認できます。
System clock synchronized: yes, NTP service: active となっており、時刻同期が行われていることが分かります。
timedatectl timesync-status で、同期先のサーバ並びに時刻のオフセットやジッタなどの情報が表示されます。
Server: ntp.ubuntu.comに同期していることがわかります。
2) 時刻の同期先を、ntp.nict.jpに変更
ntp.ubuntu.comへの同期を、国内のntp.nict.jpに変更します。
① timesyncd.confファイルを確認すると、同期先がコメントアウトされています。
② timesyncd.confファイルをコピーしてバックアップします。
③ sedコマンドを使って、timesyncd.confファイルを修正します。
#NTP= → NTP=ntp.nict.jp
エディタで修正してもOKです。
④ timesyncd.confファイルが書き換わりました。
⑤ systemd-timesyncd.serviceを再起動します。
⑥ timedatectl コマンドで同期がされているか確認します。同期しています。
⑦ timedateclt timsync-status コマンドで 同期先が変更されたか確認します。
ntp.nict.jpに変わっているのが分かります。Offset, DelayやJitterが小さくなっているのが確認できます。
⑧ systemctl コマンドで、systemd-timesyncd.serviceの状況を確認してみます。activeになっています。
⑨ systemd-timesyncd.serviceが自動で起動されるかを確認しておきます。enabledで自動起動になっています。
2-5. シリアルポート・ターミナルソフト:GTKTerm
センサモジュール(R-MSM)のUSB接続やBluetooth接続の確認動作に使用します。
インストールと活用方法に関しては、こちら(GTKTerm: Raspberry pi, Ubuntu)を参照ください。
2-6. Ubuntuのバージョン確認
Ubuntuのバージョンを知る方法はいろいろあります。次のカーネルバージョンを調べるコマンドでもわかりますが、手っ取り早いのが以下のコマンドです。
$ lsb_release -a
2-7. Ubuntuのカーネルバージョン確認
Ubuntuのカーネルを調べるコマンドは以下のコマンドが便利です。
(Raspberry Piでも使用できます)
$ hostnamectl
2-8. OSの対応ビット長を調べる
OSの処理しているビット長を調べるには、以下のコマンドを使用します。
(Ubuntu, Raspberry Piの両方で使えます。Ubuntuでは意味が無いですが)
$ getconf LONG_BIT
以下はRaspberry Piのbullseyeの64bit版で試した結果です。
3.便利なツール達
3-1. ファイアウォールの設定:ufw(Uncomplicated Firewall)
1) ufwの動作開始/動作停止
① ufwはインストール後、動作を開始しています。
systemctl status ufw.service でactive(exited)になっています。
② ただし、非アクティブになっています。“ufw status”で状態を確認できます。
sudo ufw status で“非アクティブ”が返ってきます。
③ アクティブにするためには、“ufw enable” と実行します。
sudo ufw enable
④ 停止するには、”ufw disable” と実行します。
sudo ufw disable
2) ルールの追加
① “ufw status verbose”でルール詳細を確認できます。
初期状態では、入力はすべて拒否で、出力はすべて許可になっています。
② allow コマンドを使って、sshを許可します。
sudo ufw allow ssh
③ allow コマンドを使って、httpを許可します。
sudo ufw allow http
④ ルールが設定されたかを確認します。
sudo ufw status verbose
tcpのポート22(ssh)とポート80(http)のINが許可されています。
⑤ サービス名とポート番号の関係は、services ファイルに記載されています。
3) ルールの削除
① “ufw status numbered”でルール詳細を番号付きで確認できます。
sudo ufw status numbered
② delete コマンドを使って、ルールを削除できます。
sudo ufw delete 3
③ サービスで指定することも可能です。
sudo ufw delete http
4) ログファイル
① logファイルは /var/log/ufw.log です。
5) Node-RED用のファイアウォール設定
Node-REDは、TCPプロトコルで、ポート1880を使用します。同一のWiFi環境でエディタ・ダッシュボードが確認できるように、設定を追加します。
① 現状の設定を確認します。
sudo ufw status verbose
② プロトコル TCP、ポート 1880で、IP 192.168.11.0/24に入力を許可する設定を追加します。
sudo ufw allow from 192.168.11.0/24 to any port 1880 proto tcp
③ 設定を確認します。
sudo ufw status verbose
3-2. ssh, sftp:open-ssh
エッジサーバにリモートで入って処理を行ったり、エッジサーバにファイルを転送、またはエッジサーバからファイルを転送したりする際に、sshやsftpはとても便利です。
ここでは、ubuntuにsshとsftpを行うためのツールopen-sshをインストールして、Windows, PDHから接続してみます。
注意事項:ファイアウォール(ufw)を設定している場合は、sshのポートは開けておいてください。
1) open-sshのインストール
① open-sshをインストールするために、以下のコマンドを実行します。
sudo apt install openssh-server –y
② 終了したらインストール完了です。
③ セキュリティのために、rootでのsshアクセスを禁止するように設定ファイルを変更するためにエディタでsshの設定ファイル(sshd_config)を開きます。
※ 同じフォルダに”ssh_config”もあります。間違えないようにご注意ください!!
④ ファイル中ほどの “PermitRootLogin”の行の先頭の“#”を外し、”no”に変えます。変えたら保存して終了します。
⑤ 再起動します。
sudo systemctl restart ssh
⑥ 再起動したか確認しておきます。
systemctl status ssh
2) ファイアウォール(ufw)の設定
① ufwの設定に使用可能なアプリ名を調べます。
sudo ufw app list
② OpenSSHがあるので、アプリ名を使って、ファイアウォールの設定を行います。エッジサーバを想定してローカルなWiFi環境のみに許可します。
sudo ufw allow from 192.168.11.0/24 to any app OpenSSH
③ 設定が出来たか確認します。
3) Windowsからの接続確認
Windowsは、open-sshのクライアントがインストールされていますので、コマンドプロンプト(Dos窓)を開いて、sshで接続できます。
① コマンドプロンプトを開きます。
② “ユーザー名@ホスト名 または、IPアドレス”で接続できます。
ssh hayakawa@hayakawa-ubuntu
③ 初回は本当に接続するかを確認してきますので、”yes”と入力します。
④ sftpも同様に実行できます。
sftp hayakawa@hayakawa-ubuntu
⑤ get *.png で画像ファイルを取得します。
⑥ Tera Termからも接続できます。
4) Raspberry Pi 4(PDH)からの接続確認
Raspberry Piも open-sshのクライアントがインストールされていますので、問題なく接続できます。端末画面を開いてコマンドを入力します。
① ここでは、IPアドレスを使って接続しています。
② 初回は確認メッセージが出てきますので、”yes“と入力すると接続できます。
3-3. ファイルの共有:sambaの導入
エッジサーバに貯めたデータを他のPCなどから参照するためには、sftpなどでファイルの転送を行うのもよいですが、やはりエッジサーバのファイルを共有できると便利です。
ファイルの共有のためのツールがsambaです。ここでは、Ubuntuにsambaをインストールし、Windows PCからファイルの閲覧を行います。
1) sambaのインストール
① sambaをインストールするために、以下のコマンドを実行します。
sudo apt install samba –y
終了したらインストール完了です。
2) 共有フォルダの設定
① 共有するフォルダを作成します。フォルダ名は変更可能です。
sudo mkdir /home/share
② 共有するフォルダの読出し/書込み権限を変更します。
sudo chmod 777 /home/share
③ 設定ファイルを修正します。
④ キャラクタセットの記述を追加します。
⑤ 共有フォルダの設定をファイルの最後に記載します。
[Share]
# 共有フォルダーを指定
path = /home/share
# 書き込みを許可する
writable = yes
# ゲストユーザー (nobody) を許可する
guest ok = yes
# 全てゲストユーザーとして扱う
guest only = yes
# ファイル作成時のパーミッションを [777] とする
force create mode = 777
# フォルダー作成時のパーミッションを [777] とする
force directory mode = 777
⑥ 設定ファイルの修正が終わったら、sambaを再起動します。
sudo systemctl restart smbd.service
⑦ 再起動がうまくいったか確認します。
sudo systemctl status smbd.service
3) ファイアウォール(ufw)の設定
① ufwの設定に使用可能なアプリ名を調べます。
sudo ufw app list
② Sambaがあるので、アプリ名を使って、ファイアウォールの設定を行います。エッジサーバを想定してローカルなWiFi環境のみに許可します。
sudo ufw allow from 192.168.11.0/24 to any app Samba
③ 設定が出来たか確認します。
4) 動作の確認
Ubuntuで設定した/home/shareのフォルダにファイルを入れ、Windowsから見ることができるかを確認します。
① /home/shareにファイルをコピーします。
cp *.png /home/share
② コピーできたか確認します。
ls /home/share
③ Windows側で、ネットワークを選び、UbuntuのHOST名を入力します。
“Share”のフォルダが見えました
④ “Share”のフォルダをクリックすると、コピーした画像ファイルが確認できます。
3-4. リモートデスクトップ接続とVNC接続:Ubuntu 22.04 LTS 新機能
Ubuntu 22.04 LTSでは、リモートデスクトップが標準でサポートされるようになりました。従来のVNC(Virtual Network Computing)もレガシーなVNCということでサポートされています。
ここでは、まずWindowsからUbuntuにリモートデスクトップ接続を行います。その後、Real VNCのVNC Viewerを使ってWindowsからUbuntuに接続してみます。
1) Ubuntuの設定
① デスクトップの「設定」を開き、「共有」を選択します。
② 次に、「リモートデスクトップ」を選びます。
③ 「リモートデスクトップ」をONにします。
④ VNCを使う際には、「レガシーなVNCプロトコルを有効にする」をチェックします。
⑤ 「リモートコントロール」をONにします。
⑥ 接続する際に使用するユーザー名とパスワードを入力します。
デフォルトでUbuntuのユーザー名が入っています。
⑦ 入力が終わったら「×」を押して窓を消します。
⑧ 「リモートデスクトップ」と「リモートログイン」が「オン」になりました。
2) ファイアウォールの設定: リモートデスクトップ
① リモートデスクトップで使用するポート 3389を許可します。
エッジサーバを想定してローカルなWiFi環境のみに許可します。
② 設定ができたかを確認します。
3) ファイアウォールの設定: VNC
① VNCで使用するポート 5900を許可します。
エッジサーバを想定してローカルなWiFi環境のみに許可します。
② 設定ができたかを確認します。
以上で、Ubuntuでの設定が完了しました。
Windowsからの接続実験に移ります。
4) リモートデスクトップを使ったWindowsからの接続
① Windowsのメニューから「リモートデスクトップ接続」を選択します。
② リモートデスクトップ接続の画面が出てきたら、コンピュータ名とユーザー名を入力するために、「オプション表示」をクリックします。
③ コンピュータ名とユーザー名を入力します。
④ 「接続」を押します。
⑤ パスワードを聞いてきますので、パスワードを入力します。
⑥ 確認画面が出てきますので、「はい」を押します。
⑦ 接続され、画面が表示されました。
5) VNC によるWindowsからの接続
① RealVNC のVNC Viewerを起動し、Ubuntuのホスト名を入力します。
② しばらくすると、接続の確認画面が出てきますので、“Continue”を押します。
③ 接続され、画面が表示されました。
6) VNC 接続時ブラック画面対応
VNC ViewerでUbuntuに接続した場合に、黒い画面で表示されないことがあります。その場合の対応を以下に示します。
① 黒い画面の中央上部にカーソルを持って行くと、メニューが出ます。そのメニューのうち歯車のカタチをしたProperties設定を選択します。
② すると図のようにポップアップメニューが出てきます。一番上の項目“Picture quality”を“Automatic”から“Medium”に変更してください。
③ その後、OKを押して、メニューを閉じた後に、VNC Viewerも一度閉じます。
④ 再接続してみてください。上手く接続されると思います。
3-5. x11vncのインストール
1) 概要
vncは、端末やキーボードなどのないサーバや遠隔にあるサーバなどの操作にsshと同様に便利な機能です。
Ubuntu 22.04LTSから、vncのサポートが行われるようになりました。それにより、vncだけでなく、WindowsからのRDT(リモートデスクトップ)にも対応するようになりました。接続の方法に関しては、こちらに記載しています。
ただし、接続時に接続される側で[Accept]等の許可が必要になり、一度逃すとそのあと接続できなくなるということが起こり、今一つ使い勝手が悪いです。
そこで、ここでは、x11vncを使ったvnc接続に関して説明します。
参考HP: Ubuntu 20.04 LTSでのx11vnc設定手順
2) ディスプレイマネージャの変更
Ubuntu 22.04LTSは、 “GDM”がデフォルトのディスプレイマネージャとして採用されています。x11vncは、“GDM”では動かすことができないので、ディスプレイマネージャを”lightdm”に変更します。
① 以下のコマンドを端末画面に入力して“lightdm”をインストールします。
sudo apt install lightdm –y
② インストールの途中で、デフォルトのディスプレイマネージャを“gdm3”にするか、“lightdm”にするかを聞いてきますので、lightdmを選びます。
③ インストールが完了したら、再起動します。
3) x11vncのインストール
x11vncをインストールします。
$ sudo apt install x11vnc -y
4) 認証用のパスワードファイルの作成
以下のコマンドを実行して、パスワードファイルを作成します。
実行するとパスワードを聞いてきますので、2回入力します。
5) ファイアウォールの設定
一般的に、VNCでは、ポート5900番をリッスン用に使用します。ufwを使って、ファイアウォールのポート5900番を開けます。
① ufwのallowコマンドを使ってポートを開けます。許可するIPアドレスは、各自の環境に合わせて変更してください。
sudo ufw allow from 192.168.11.0/24 to any port 5900 proto tcp
② 設定内容を確認します。
sudo ufw status verbose
6) vncの動作試験
次に、コマンドラインからx11vncを起動して、PCからvncで接続してみます。これが、うまく行けば、systemdを使って、自動起動するように設定します。
① 以下のコマンドを入力します。
② PCからvncで接続します。
③ 接続が確認できたら、Ctrl+cで止めます。
7) x11vncの自動起動の設定
電源投入時に自動起動するように設定します。
① エディタを使って、以下のファイルを作成します(ファイル名は変更可能です。ただし、自動起動の際の名称が変わります)。
中には、systemdで自動起動時に必要な内容を記載します。
② 自動起動のための、systemdのコマンドを実行します。
sudo systemctl daemon-reload
sudo systemctl enable x11vnc.service
sudo systemctl start x11vnc.service
③ x11vncの起動を確認します。“active”になっていることと、下のコメント欄にエラー等の表示が無いことを確認してください。
sudo systemctl status x11vnc.service
8) vnc Viewerからの動作確認
最後に、vncの動作確認を行います。ここでは、Real VNC® の vnc Viewerからの接続をしてみます。
① vnc Viewerを起動します。そして、接続画面に、ホスト名もしくはIPアドレスを入力します。
② 接続の確認画面が出てきますので、[Continue]を押します。
③ パスワードを聞いてきますので、認証用のパスワード作成時に入力したパスワードを入力して、[OK]を押します。
④ 接続されます。ネットワークが遅いと反応が遅い、バック画面がちらつく等が起こります。
3-6. Python3の最新版のインストール
1) 概要
Pythonは、ライブラリが豊富にそろっており、学習も容易にできるということでIoT関係とてもよく使用されているプログラミング言語です。Ubuntuには、あらかじめPython3のパッケージがインストールされています。
ここでは、最新版をPythonのHPから取得してきて、コンパイル、インストールするまでを紹介したいと思います。
参考にしたHPは、ここ(Ubuntu環境のPython)です。
2) Ubuntu 22.04 LTSのバージョン確認
① python3 –version でバージョンを確認します。
3) 最新版のPythonのバージョン確認とダウンロード
① pythonのダウンロードページへ移動し、確認
② Download ボタンを押してダウンロード
4) ダウンロードしたファイルの解凍
① python-3.11.0.tar.xzのファイルを“Downloads”のフォルダから“ホーム”に移動します。
② python-3.11.0.tar.xzのファイルを右クリックし“ここで展開”を選んで解凍します。
5) コンパイルに必要な環境設定
① 以下のコマンドを入力し、環境を構築します。
sudo apt install build-essential libbz2-dev libdb-dev libreadline-dev libffi-dev libgdbm-dev liblzma-dev libncursesw5-dev libsqlite3-dev libssl-dev zlib1g-dev uuid-dev tk-dev
② 完了すると以下の様なメッセージで終わります。
6) コンパイル
① ディレクトリを解凍した“python-3.11.0”に移ります。
② “./configure” とコマンドを打ちます。
③ creating Makefile が出れば完了です。
④ “make”を実行します。
⑤ “sudo make install”を実行します。
⑥ Vesrionが3.11.0になっていることを確認します。
3-7. Visual Studio Codeのインストール
Visual Studio Codeは、デスクトップで動作する軽量かつ強力なソースコードエディタで、Windows、macOS、Linuxで利用できます。JavaScript、TypeScript、Node.jsをサポートし、他の言語やランタイム(C++、C#、Java、Python、PHP、Go、.NETなど)のための拡張機能の豊富なエコシステムを備えています(オフィシャルHPより)。
ここでは、Visual Studio Codeの最新版をUbuntuにインストールするとともに、IoTでよく使用されるPythonで簡単なプログラムを動作させてみます。
1)Visual Studio Codeのダウンロード
① Visual Studio Codeのダウンロードのページに移動します。
② “.deb”のダウンロードボタンをクリックします。ダウンロードが開始されます。
③ Downloadsのディレクトリにダウンロードされます。
2) Visual Studio Codeのインストール
① ダウンロードした”.deb”ファイルを右クリックしてメニューを表示し、「別のアプリケーションで開く」を選択します。
② 「アプリケーションの選択」画面で、「ソフトウェアのインストール」を選びます。
③ インストール画面が表示されますので、「インストール」を押します。
④ この画面に変わったらインストール完了です。
3) Visual Studio Codeの起動
① デスクトップの“アプリケーションを表示するの画面から”Visual Studio Code“を選択し、起動します。
② 日本語化するために、画面右下に出てくる「インストールして再起動」のボタンをクリックします。インストールされて、日本語画面が立ち上がります。
4) Pythonの開発環境の導入
① 左横のメニューから「拡張機能」を選択します。
② 上部の検索窓に「python」と入力します。
③ Microsoftのpythonの「インストール」ボタンをクリックします。
インストールが開始します。「インストールしています」が歯車の絵に変わればインストール完了です。
5) Pythonのプログラム用フォルダの作成
① 左のメニューの一番上のエクスプローラをクリックします。
② フォルダ画面が出てきますので、右上のボタンを使って、フォルダを作成します。
③ 出てきたポップアップ画面にフォルダ名を入力します。
④ 作成を押します。ここでは、ホームの下に、“Source”フォルダを作成し、その下に“python”フォルダを作成します。
⑤ 最後に開くを押します。
⑥ 「このフォルダ内のファイルの作成者を信用しますか?」と聞いてきますので、「はい、作成者を信頼します」を押します。
6) Pythonプログラムの作成と実行
① 「新しいファイル」をクリックします。
② 「新しいファイル」が開きますので、プログラムを記載します。
for i in range(100):
print(“Hello, world!”)
③ ファイルを保存するために、「ファイル」メニューを開き、「名前を付けて保存」をクリックします。
④ 名前の入れる画面が現れますので、名前を入れます。
⑤ 「保存」を押します。
⑥ 右上の三角マークを押すと、プログラムが実行されます。
⑦ ここでは、“Hello, world!”が100回表示されます。
3-8. nmapの導入
3-7-1.概要
nmapは、以下の様なソフトで、IPアドレス空間に存在しているコンピュータやそのコンピュータのポートの開き状況などを調べることができるソフトです。
「nmapはGordon Lyonによって書かれたセキュリティスキャナである。ポートスキャン機能だけでなく、OSやバージョンの検出機能、サービスおよびそのバージョンの検出機能など、多くの機能を兼ね備えている。 from Wikipedia」
意図せぬポートが開いていないか、意図せぬコンピュータがWiFiルータ上にいないかなどセキュリティの観点からも便利なツールです。ここでは、Ubuntuへのインストールと簡単な使用方法を説明します。詳細な使用方法は、「nmapの実用的コマンド10選」などを参考にしてください。
3-7-2.インストール
Ubuntuへのインストールは以下のコマンドを端末画面から打つことで完了します。
1) インストールされるバージョンを調べます。
$ sudo apt show nmap
2) インストールします。
$ sudo apt install nmap -y
3-7-3.使用方法
1)ホストの検索:ネットワーク上に存在するホスト(コンピュータの検索)を検索します。
$ nmap –sP <IPアドレス/サブネットマスク>
2) OSの検索:IPアドレスを指定して、そのマシンのOSを調べます。
$ sudo nmap –O <IPアドレス>
1つ目の例は、Raspberry Piで、Rasbian OSですが、OSの特定まではできなかったようです。
2つ目の例は、Ubuntuです。
Linux 2.6.32と表示されています。
実際には、以下の’hostnamectl’のKernelの項にあるように Linux 5.15.0-56-gnenricです。
3) ポートの検索:IPアドレスを指定して、そのマシンのポートの状況を調べます。
$ sudo nmap –sS –sU <IPアドレス>
ここでは、自分(Ubuntuマシン)のポートを調べてみます。
ファイアーウォール(ufw)で開けているポート以外が開いていないか確認します。
631/udp ipp
5353/udp zeroconf
の2つがufwでopenにした以外で開いているポートです。
ippは、IPP (Internet Printing Protocol)で、プリンタの制御や印刷に使用されるプロトコルです。
zerofonfは、mDNS(Multicast DNS)で使用され、DNS サーバーのいないローカルネットワークでDNSのような動作を実現するために使用されます。
3-9. HTTPサーバソフトapache2のインストール
1) 概要
Home PageHTTPサーバソフトのデファクトスタンダードである“apache2”をUbuntu 22.04LTSにインストールする手順を説明します。
“apache2”は、HTTPのリクエストがあると、デフォルトでは、/var/www/html/index.htmlのデータを返します。このファイルを変更することでサーバとして機能させられます。
2) apache2のインストール
次のコマンドを端末に入力して、apache2をインストールします。
sudo apt install apache2 -y
3) ファイアウォールの設定
次に、ファイアウォールの設定を行います。
① ufwのアプリリストにないかを確認します。
sudo ufw app list
② “Apache”が存在しますので、これを使って、ufwの設定を行います(許可するIPアドレスは各自の環境に合わせてください)。
sudo ufw allow from 192.168.11.0/24 to any app Apache
③ 設定がされているかを確認します。
sudo ufw status verbose
port 80番 tcpで設定されていることが分かります。
4) 起動の確認
① 電源投入時に自動起動する設定になっているかを確認します。
systemctl is-enabled apache2.service
“enabled”が返ってきましたので、自動起動する設定になっています。
② 起動しているか確認します。
systemctl status apache2.service
active(running)となっており、また、下部のログにもエラー等が無いことから問題なく起動しています。
5) 動作の確認
ブラウザで、“http://(Ubuntuのホスト名 or IPアドレス)/”にアクセスします。下記の様な表示がされればOKです。
このページは、初めにも書きましたが、”/var/www/html/index.html”です。
このファイルを書き換えることで、独自のページにすることができます。
3-10. バイナリファイルとテキストファイルの変換コマンド(uuencode/uudecode)の導入
1) ツールの概要
UNIX系のOSでは、バイナリファイルをテキストファイルに変換するuuencodeというソフトとuuencodeで変換されたテキストファイルを元のバイナリファイルに戻すuudecodeというソフトがあります。もともとは、バイナリファイルをメールなどで送る際に使用されていました。今では、バイナリファイルをそのまま添付できるようになりましたし、1回のメールのサイズの制限も緩くなっていますので使用されることは無くなっています。バイナリファイルをテキストファイルに変換し、分割してメールで送るというような用途に使われていました。
このような経緯からかもしれませんが、ubuntu 22.04 LTSでは標準では入っていませんので、インストールする必要があります。
2) インストール
端末画面で、
uudecode
と入力すると、コマンドが見つからないので、以下の方法でインストールせよとメッセージが出てきます。
sudo apt install sharutils
そこで、これに従って、インストールします。
sudo apt install sharutils –y
3) 使用法
a) uuencode
uuencodeは、パイプで繋いで、入出力することが前提で設計されていますが、入力ファイル名をコマンドラインで指定することもできます。詳細は、ヘルプを見てもらうとして、使用法の簡単な説明は以下の通りです。
$ uuencode 変換するファイル名 uudecodeで出力するファイル名 > 出力ファイル名
ここで、
変換するファイル名:テキストファイルにしたいバイナリファイル名
uudecodeで出力するファイル名:uuencode時に、uudecodeした時のファイル名を指定します。これにより、元のファイル名が分からなくてもuudecodeできます。
出力ファイル名:uuencodeは変換結果のテキストデータを標準出力に出力しますので、リダイレクトでファイルに落とします。その際のファイル名を指定します。
下記の例では、“R-CPS-Opening_Picture.png”というバイナリファイルをuuencodeしています。変換するファイル名を”test.png”と言う名前にして、“test.txt”というファイルにリダイレクトで落としています。
b) uudecode
uudecodeの簡単な使用法は以下の通りです。
$ uudecode 変換するファイル名
以下の例では、uuencodeしてできた“test.txt”をバイナリファイルに戻しています。変換後、自動的に“test.png”というファイルができます。
なお、uudecodeでは、意図的に変換後のファイル名を指定することもできます。その際の使用法は以下の通りです。
$ uudecode –o 変換後ファイル名 変換するファイル名
また、変換後ファイル名と変換するファイル名には、ディレクトリを指定することもできます。ですので、異なるディレクトリに出力することもできます。