- 投稿日:2021-01-11T23:53:15+09:00
GoLand IDEをUbuntuにインストール
無料バージョンではありますが、GoLandエディタを自分のUbuntu環境にダウンロードしてみました。
参考にしたのは以下のサイトです。
Install Jetbrains GoLand Go IDE on Ubuntu
在Ubuntu安装JetBrains Goland IDEsnapdを使ってダウンロードする方法もありますが、今回はサイトからダウンロードする方向でいきました。
前提
- 環境がUbuntu
- Goはローカルにすでにダウンロード済み
ダウンロード
Linux用のバージョンをこちらでダウンロードします。
https://www.jetbrains.com/ja-jp/go/download/#section=linuxダウンロードしたら展開して
opt
フォルダに移します。
もちろん他のところでもOKらしいです。
移動したらシェルファイルを実行して立ち上げます。$ cd Downloads $ sudo tar xzf goland-2020.3.1.tar.gz -C /opt $ ls -l /opt total 12 drwx--x--x 4 root root 4096 11月 20 01:33 containerd drwxr-xr-x 8 root root 4096 1月 11 23:19 GoLand-2020.3.1 drwxr-xr-x 3 root root 4096 11月 20 10:46 google $ /opt/GoLand-2020.3.1/bin/goland.shこのような画面が出てきますが、
Do not import settings
を選んで進みます。ライセンスは持っていないので、無料バージョンを使います。
Evaluate for free
を選んで持っていないほうで進めると、最終的にこの画面にたどりつきます。毎回シェルファイルを実行して立ち上げるのは面倒なので、以下のようにアプリケーションディレクトリにファイルを作成します。今回はバージョンが
2020.3.1
なので、以下のように記入します。バージョンが変わった場合は違うバージョン名を記入してください。$ cd /usr/share/applications/ $ sudo vi Goland.desktop [Desktop Entry] Name=Goland Comment=Goland IDE Exec=/opt/GoLand-2020.3.1/bin/goland.sh Icon=/opt/GoLand-2020.3.1/bin/goland.png Type=Application Terminal=false Encoding=UTF-8作ったファイルに権限を与えます。
$ sudo chown 自分のユーザー名 Goland.desktop $ sudo chmod 755 Goland.desktopこれでアプリケーション内から開けるようになります。
ちなみにDesktopでも開きたい場合は、Desktopに先程のファイルをコピればいいです。
$ cp Goland.desktop /home/user/Desktop/プログラムを書いてみる
New Projectを選びます。
すでに入っているGOROOTをもとにCreateします。
毎度おなじみの
Hello World
を作ります。上のRunメニューからRunを押すと
go build hello.go
が出てくるので、これをクリックします。Hello Worldが出力されました!
以上です。無料バージョンなんで30日しか使えないぽいんですけどね、、、
- 投稿日:2021-01-11T23:15:13+09:00
Softether VPN serverをGUIで初期設定する
はじめに
この記事は前回の記事でserver側の構築を完了した人向けです。
済んでいない方は先にそちらからお願いします。ユーザーのバッチ登録
注意と説明
過去にVPNを構築した経験があり、ユーザー登録バッチファイルを持っている方向けのセクションです。
今回が初めての人は次の#サーバー管理ツールのダウンロードまでスキップしてください。バッチファイルの例
今回はユーザー登録とパスワード登録をバッチファイルで処理します。
書式は以下の通りです。Hub hubname UserCreate username /GROUP:groupname /NOTE:none /REALNAME:hogeyama tarou UserPasswordSet username /password:passwordバッチの実行
バッチの保存場所はどこでも構いません。
以下のコマンドで実行します。/usr/local/vpnserver/vpncmd /server serveradress /in:/home/hoge/batch.txtadressはlocalhostと入力しても構いません。
コマンドは正常に終了しましたと表示されれば完了です。
サーバー管理ツールのダウンロード
Clientのwindows PCにサーバー管理ツールをインストールします。
公式ダウンロードサイトよりSoftether VPN Server→Windows→Intel(x86 and x64)を選択してください。
一番上のrtm版をダウンロードしてください。サーバー管理ツールのインストール
先程ダウンロードしたソフトをインストールします。
ダブルクリックで実行し、画面の指示に従ってください。
途中で以下の画面が表示されたときは一番下のサーバー管理マネージャーを選択してください。
マネージャーの起動と接続先登録
管理マネージャーを起動すると以下の画面になります。
ここで中心左側の新しい接続設定を選択してください。
接続設定名は任意に変更して構いません。
ホスト名はサーバーのグローバルipアドレスを入力し、これ以外は変更せずにOKをクリックしてください。管理パスワードの設定
最初の画面に戻るので、先程設定した接続設定をダブルクリックして下さい。
すると以下のように管理パスワードを設定する画面が出てきますので任意に設定して下さい。
パスワードを変更しました、という画面が出たら成功です。初期設定ウィザード
パスワードの設定が完了すると初期設定画面が出てきます。この画面では一番上のリモートアクセスVPNサーバーを選択してください。
現在の設定内容が初期化される、といった警告が表示されますが、初期設定をしているため問題ないないのではいを選択してください。
仮想hub名は既定でも構いません。設定したらOKを選択してください。
ダイナミックDNS機能(DDNS)の設定画面が出てきますが使わないので閉じるを選択してください。
IPsecなどの設定画面です。androidやwindows、iosでのOS標準の機能でVPNに接続できます。
今回はSoftetherクライアントソフトを用いてwindowsからのアクセスを行うためそのままOKを選択してください。
VPN Azureに関する設定です。利用しないので右下の無効にするを選択しOKをクリックして下さい。
VPN クライアント用の設定画面です。
セクション1.のユーザーを作成するを選択してください。
ユーザー作成画面です。
ユーザー名とパスワード(右側)を入力しOKを選択してください。
ユーザー(ユーザー名)を作成しました。と出れば成功です。OKを押して下さい。
ユーザーを更に追加したい場合はここから追加できます。
また、今せずに後から追加することもできます。
閉じるを選択してください。
またこの画面に戻るので閉じるを選択してください。管理画面
これが管理画面のホームです。
詳しい使い方は公式ドキュメントを参考にして下さい。初期設定の続き
ウィザードではやってくれない範囲の設定をします。
なお、この設定はあくまで私のクライアント環境下で使用するための設定ですのですべての人の動作を保証するものではありません。ローカルブリッジ設定
管理画面ホーム右下のローカルブリッジ設定を選択してください。
この画面が出てくるので新しいローカルブリッジの定義から最初に作成した仮想hubを選択してください。
作成する種類では新しいtapデバイスとの...を選択してください
新しいtapデバイス名は任意に設定して構いませんが、無難にtap1などがおすすめです。
名前を入力したら右下のローカルブリッジを追加を選択してください。
警告が表示されますがはい、OKを選択して続行して下さい。仮想NATの設定
管理画面ホームに戻り、最初に作成した仮想hubを選択して仮想hubの管理を選択して下さい
この画面になったら右下の仮想NATおよび...を選択して下さい。
この画面でSecureNAT機能を有効にするを選択して下さい。
OKを押して続行します。
右側のSecureNATの設定を選択して下さい。
右上MACアドレスの最初を00-ACに設定して残りはそのままにしてOKを選択して下さい。VPNクライアントのダウンロード
Clientのwindows PCにクライアント接続ツールをインストールします。
公式ダウンロードサイトよりSoftether VPN Client→Windows→Intel(x86 and x64)を選択してください。
一番上のrtm版をダウンロードしてください。
クライアントのインストール
ダウンロードしたファイルを実行します。
最初の画面で次へを選択して下さい。
その後のこの画面で上のクライアントを選択して次へをクリックしてください
その後は画面の指示に従ってください。クライアントの接続設定
インストール完了後にクライアント接続ツールが開きます。
この画面がクライアントのホームです。
上の新しい接続設定の作成を選択してください。
仮想LANカードのインストールを求められるのでそのままはいを選択してください
仮想LANカードの名前はそのままでOKを選択してください。
LANカードの作成完了後に上の新しい接続設定の作成をもう一度選択してください。
接続設定名は任意に設定して構いません。
ホスト名はサーバーのドメイン、
ポートは既定の443
仮想hub名は先程に作成した仮想hub名です。
プロキシの種類はあなたの環境に合わせて任意に設定してください。
右側のユーザー認証で初期設定ウィザードで作成したユーザーの接続情報を入力します。
すべて入力したらOKを選択してください。
クライアントのホームに戻るので、今設定した接続設定をダブルクリックして接続して下さい。
このような画面が出れば成功です。おわり
よいVPNライフを!!
参考文献
公式ドキュメント
https://ja.softether.org/4-docs/1-manual/3._SoftEther_VPN_Server_%E3%83%9E%E3%83%8B%E3%83%A5%E3%82%A2%E3%83%AB/3.3_VPN_Server_%E7%AE%A1%E7%90%86
公式ドキュメント-バッチ処理
https://ja.softether.org/4-docs/1-manual/6/6.2
- 投稿日:2021-01-11T22:11:35+09:00
Visual Studio Code のターミナルでlinuxコマンドを使う方法
WindowsのVSCodeでターミナルを開いたときに、Linuxコマンドを使えるように設定した時のメモ。
事前準備
この設定はGitBASHを使用する前提なので、下記サイトよりインストールしておく。
https://gitforwindows.org/設定
VSCodeのsettings.jsonに下記を追加する
(settins.jsonの開き方はこちらを参照)settings.json"terminal.integrated.shell.windows": "C:\\Program Files\\Git\\git-cmd.exe", "terminal.integrated.shellArgs.windows": [ "--command=usr/bin/bash.exe", "-l", "-i" ]こうすると、ターミナルはGitBashで使っているコマンドを参照するよ。となる。
参考
https://code.visualstudio.com/docs/editor/integrated-terminal#_windows
- 投稿日:2021-01-11T20:20:07+09:00
Linux標準教科書 章末テスト解答
第1章 Linuxとは
(1) 基本ソフトウェアとして適切なものを選びなさい。
Windows
Linux(2) 応用ソフトウェアとして適切なものを選びなさい。
Word
Excel(3) Operating System の役割として適切なものを 2 つあげなさい。
共通部品の提供
リソース管理(4) Linux について正しく述べているものを選びなさい。
Linux はカーネルとユーザランドによって成り立つ。(5) パッケージを使って応用ソフトウェアを導入する利点を説明しなさい。
ソースコードをビルドする手間を省ける第2章 無し
第3章 基本的なコマンド
(1) ファイルやディレクトリを参照するコマンドを記述しなさい。
ls(2)/media/cdrom/の中身を最新更新日順に並べて表示するコマンドを選びなさい。
ls -lt /media/cdrom/(3) 今いるパスを表示するコマンドを記述しなさい。
pwd(4)/home/user フォルダにある test というファイルを/root/backup フォルダに移動します。以下の空欄に当てはまるコマンドを書きなさい。
mv /home/user/test /root/backup
ls /root/backup
合計 4
rw-r--r--. 1 root root 19 6 月 14 11:14 2012 test(5) パス/etc の中のファイルで、ファイル名の一部に「resolv」という文字列が含まれるファイル
を検索するコマンドを記述しなさい。
find /etc -name resolv第4章 正規表現とパイプ
(1)grep コマンドを利用し、行頭が a または b で始まる行を抽出できる正規表現を以下の 4 つの中から選びなさい
grep -e ^[ab](2)「ls /usr/bin | grep -e ^a..$」というコマンドを実行した場合、どのような結果になるか答えなさい。
/usr/bin以下のaからはじまるの3文字のディレクトリ名、ファイル名が表示される(3) パス/etc の中にあるファイルでファイル名が conf で終わるものを grep とパイプを用いて記述しなさい。
ls /etc | grep conf$
(4)ls -l を実行した結果を ls-result ファイルに書き込む場合のコマンドを記述しなさい。
ls -l >> ls-result
(5)chkconfig --list の実行結果から iptables だけを絞り込んで表示するコマンドを grep を使って記述しなさい。
chkconfig --list | grep iptables第5章 基本的なコマンド2
(1)sort コマンドの実行結果となるように、適切なオプションを付けなさい。
$ sort (-k 3) price
Digital Camera 9800
32-inch TV 49800
Blue-ray Recorder 59800(2)uniq-sample というファイルに対して uniq コマンドを実行したときの実行結果を答えなさい。
red
blue
red
blue(3)file1 と file2 の内容の違いを比較するコマンドを記述しなさい。
diff file1 file2
(4) 以下のコマンドを実行したところ、何も結果が表示されずコマンド待ち状態になりました。何が考えられるか答えなさい。
file1とfile2の内容が同じ
(5) パス /etc の ls コマンドの実行結果が保存されたファイル ls-etc の終わり 8 行分を表示する場合のコマンドを記述しなさい。
$ tail -n 8 ls-etc
wpa_supplicant
xdg
xinetd.d
xml
yp.conf
yum
yum.conf
yum.repos.d
解答: tail -n 8第6章 viエディタ
vi を使用中の場合に、以下を実現するためのコマンドを答えなさい。
(1) カレント行から 3 行をコピーする。3yy
(2) 文書内の abc という語句を検索する。
/abc
(3) 編集中のファイルを保存せずに強制終了する。
:q!
(4) 文書の 100 行目に移動する。
100G
(5) 文書中の「高野豆腐」を「絹ごし豆腐」に置換する。ただし g オプションを付けて実行する。
:%s/高野豆腐/絹ごし豆腐/g
第7章 管理者の仕事
(1)useradd で user を作りましたが、ログインすることができません。ログインできるようにする
には何が必要か答えなさい。passwdコマンドでパスワードを登録する
(2) ユーザ user2 を削除する場合のコマンドを答えなさい。
userdel user2
(3) グループ penguin を作成する場合のコマンドを答えなさい。
groupadd penguin
(4) すでに作成済みのユーザ penguin のパスワードを変更する場合のコマンドを答えなさい。
passwd penguin
(5)su コマンドに-オプションを付けない場合と付ける場合の違いは何か、答えなさい。
-オプションを付けない場合は、カレントディレクトリを変更せずにrootでログインする
-オプションを付ける場合は、カレントディレクトリをrootのホームディレクトリに変更してログインする第8章 ユーザ権限とアクセス権
(1) 以下のコマンドを実行した場合の実行結果を選びなさい。
umask 022
touch test
chgrp nobody test
ls -l test
- -rw-r--r--. 1 root nobody 18 5 月 29 18:51 2012 test
(2)chownfile のファイルモードを 755 にするためのコマンドを記述しなさい。
chmod 755 chownfile
(3)chownfile のファイルモードを 644 にするためのコマンドを記述しなさい。
chmod 644 chownfile
(4)umask 070 にした後 umask ファイルを作成した場合に設定されるファイルモードは以下のど
れでしょうか?
- -rw----r--. 1 user user 0 5 月 29 19:22 2012 umask
(5)umask 022 にした後 umask ファイルを作成した場合に設定されるファイルモードは以下のど
れでしょうか?
- -rw-r--r--. 1 user user 0 5 月 29 19:24 2012 umask
第9章 シェルスクリプト
(1)実行結果が解になるように、変数"LPI"に入力した値を出力しなさい。$ LPI=linux
$ echo $LPI
linux
解答: $LPI(2)以下のスクリプトの空欄を埋め、カレントディレクトリにファイルlpi.txtが存在しているか確認するスクリプトを完成させなさい。
!/bin/bash
if [ -f lpi.txt ]; then
echo file exists.
else
echo file does not exists.
fi
解答: else, fi(3)以下のスクリプトの空欄を埋め、カレントディレクトリ内のすべてのファイル(サブディレクトリを除く)の種類を表示するスクリプトを完成させなさい。
#!/bin/bash
for i in
ls
do
if [ ! -d $i ]; then
file $i
fi
done
解答: done(4)次の動作をするシェルスクリプトを書きなさい。
1.実行すると、age:として年齢の入力を促される。
2.20以上の値を入れると'you can drink.'と出力される。
3.20未満の値を入れると、'you cannot drink.'と出力される。#!/bin/bash
echo -n age:; read age
if [ $age -ge 20 ]; then
echo "you can drink."
else
echo "you cannot drink."
fi
(5)bashで、シェルスクリプトの中身を表示しながら実行(デバッグ)するにはどのようにしたらよいか答えなさい。sh -xコマンドでシェルスクリプトを実行する
$ sh -x 9-9-4.sh
+ echo -n age:
age:+ read age
6
+ '[' 6 -ge 20 ']'
+ echo 'you cannot drink.'
you cannot drink.第10章 ネットワークの設定と管理
(1) 以下のうち、一般的に使われるサーバーが使うポートについて、正しい組み合わせを選びな
さい。
- 22:SSH 80:HTTP 443:HTTPS
(2)traceroute コマンドの動作と利用方法を説明しなさい。
動作:送信先までに経由するゲートウェイを表示する
利用方法:pingコマンドで送信先から正常なレスポンスがないとき、経由ゲートウェイのルーティングが正しいか調べる。(3) マシンに設定されている IP アドレスをコマンドで表示しなさい。
ip a
(4) マシンの DNS サーバー参照先として 8.8.8.8 を設定しなさい。
/etc/resolv.conf
nameserver 8.8.8.8(5)192.168.100.20 からのアクセスを拒否するよう設定しなさい。
/etc/hosts.deny
sshd : 192.168.100.20第11章 プロセス管理
(1)作成中のプログラムをシェルスクリプトから試行したところ、プロンプトが返ってこなくなった。どのような対処方法があるか。CTRL + Cを押して、SIGINT(Interupt Signal)を送信する。
(2)シグナル番号とシグナル名の組み合わせとして正しいのは次のうちどれか。4 SIGNUP:1,SIGINT:2,SIGKILL:9,SIGTERM:15
第12章 ファイル管理
(1)マシンのハードディスクのパーティションを確認するコマンドを記述しなさい。#fdisk -l
(2)スワップファイルシステムについて説明しなさい。
メモリのデータを一時的にハードディスクに退避させるための領域
(3)ext3やext4がext2より優れている点を1つあげなさい。
ジャーナリング機能を採用しており、システム障害時にデータ損失のリスクを回避できる。
(4)ハードリンクとシンボリックリンクの違いを説明しなさい。
ハードリンクはデータの実体を直接参照する。(データの別名をつくるイメージ)
シンボリックリンクはデータの実体を間接的に参照する。(データのショートカットをつくるイメージ)(5)ログインしているユーザのホームディレクトリの使用量を表示するコマンドを記述しなさい。
$ du -sh ~
- 投稿日:2021-01-11T19:17:44+09:00
Linux【ディレクトリコマンド】
はじめに
これは学習用のメモになります。
- ディレクトリとはフォルダのことです。ファイルを格納するフォルダのこと。
1.cd(change directory)
cd [ディレクトリ]ディレクトリを移動するコマンド
特別なディレクトリの指定
カレントディレクトリ、親ディレクトリ、ホームディレクトリには特別な指定方法がある
ディレクトリ 意味 指定方法 カレントディレクトリ 現在自分がいるディレクトリ 「.」 親ディレクトリ 一つ上の階層のディレクトリ 「..」 ホームディレクトリ 「/home/ユーザー名」ディレクトリ 「~」 ルートディレクトリ 「/」ディレクトリ 「/」 2.pwd
pwd [オプション] #ほとんどオプションをつけることはないカレントディレクトリを表示するコマンド
今どこのディレクトリにいるのか教えてくれるコマンド3.ls
ls [オプション][ディレクトリ・ファイル名]ファイルやディレクトリの一覧を表示するコマンド
今いるディレクトリの中に入っているフォルダ/ファイルがわかる便利なパス名展開
パス名展開を使うと複数のファイルを一度に指定できる
パス名展開
記号 意味 * 任意の文字列 ? 任意の1文字 具体例 #拡張子がhtmlのファイルの一覧を表示 $ls *.html index.html home.html job.html #zから始まり4文字で終わるファイルを表示 $ls /bin/z??? /bin/zcat /bin/zcmp /bin/znewよく使うオプション
ls -l
ファイルの詳細情報を表示する
ls -a
隠しファイルも含めた全てのファイルを表示する
ls -F
ファイルの種別を表示
4.mkdir(make directory)
mkdir [オプション]<作成するディレクトリ名>ディレクトリを作成するコマンド
よく使うオプション
-p
深いディレクトリを一度に作成する
-pオプションをつけるとtest,2019というディレクトリを事前に作らなくていい$mkdir -p test/2019/085.rmdir(remove directory)
rmdir <ディレクトリ名>空のディレクトリを削除するコマンド(空でないディレクトリを削除しようとするとエラーになります)
あまり使うことはない(ほとんどrmコマンドを使うことが多い)6.パス
パスはディレクトリやファイルの住所情報。
ディレクトリの階層の区切りを「/」で表現するパスの種類
1)絶対パス
絶対パスはルートディレクトリ(「/」)から始まるパス。
/home/kume/code/README.md2)相対パス
相対パスはカレントディレクトリから始まるパス。
code/README.md
- 投稿日:2021-01-11T16:17:45+09:00
Raspberry Piのシステムモニタリング
1.この記事の内容
RaspberryPiのCPUやメモリ等のシステム状況をモニタリングする方法として,Netdataの導入方法を紹介します.
NetdataはDockerコンテナでHTTPサーバを起動し,ネットワーク内のWindows PCなどからブラウザでアクセスしてモニタリングする仕組みです.
Dockerを使用できる環境であれば,RaspberryPiでなくてもLinux環境上で利用できると思います.1-1.使用環境
- Raspberry Pi 3 Model B+
- Windows 10(ブラウザでRaspberry Piのシステム状況をモニタリング)
2.Netdataの導入手順とモニタリング方法
- Raspberry PiにDockerをインストールする
$ curl -sSL https://get.docker.com | sh- dockerグループにユーザを追加
$ sudo usermod -aG docker pi- Dockerの動作確認
$ docker run hello-world- Netdata起動
docker run -d --name=netdata \ -p 19999:19999 \ -v /proc:/host/proc:ro \ -v /sys:/host/sys:ro \ -v /var/run/docker.sock:/var/run/docker.sock:ro \ --cap-add SYS_PTRACE \ --security-opt apparmor=unconfined \ netdata/netdata- ブラウザからアクセス(http://:19999/)
CPUやRAMなどの推移がブラウザ上でリアルタイム(約1秒間隔)で更新されます.
docker run後,Netdataの停止と再開については,下記の手順で実行できます.
- 停止
$ docker stop netdata- 再開
$ docker start netdata3. Netdataのアンインストール
Netdata自体はDockerイメージを取り込むだけの為,Dockerをアンインストールするだけです.
$ sudo apt purge docker-ce $ sudo rm -rf /var/lib/docker $ sudo apt autoremove --purge4.さいごに
Raspberry Piのシステム状況をリアルタイムで確認するためにNetdataを導入しました.
ページ右上からエクスポートや印刷ができますので,スナップショットの記録はこれらの機能で実現可能です.Raspberry Pi 1にも導入しようと試みましたが,下記のメッセージが表示され,Dockerコンテナを起動できませんでした.
ARMv6に対応していないようです.Raspberry Pi Zeroでも同様かもしれませんので,ご注意ください.5.関連リンク
- 投稿日:2021-01-11T15:48:24+09:00
nvidia製ドライバを入れようとするとUbuntu 20.04 が起動しなくなる問題
はじめに
ちょっと古いノートPCにUbuntu20.04を入れて再利用していたのですが、何度か設定変更のタイミングでGUIが表示されなくなる(ログイン画面までたどり着かない)トラブルが多発したので備忘録がてらメモ。
環境
Vaio VPCZ1(Geforce GT 330M, Coreシリーズ1世代目の化石PC)
Ubuntu 20.04.1 LTS現象
nvidia のドライバーを、こんな感じでGUIからインストールしようとしたところ
(最近は勝手に必要なドライバを見つけてくれて、GUIでインストールできるんですね...)
次に再起動するとログイン画面が出てこない
真っ黒画面にアンダースコア(キャレット)が点滅原因
nVidia 340ドライバ(最新は340.108)は、Linuxカーネル5.4以上での動作をサポートしていない1。
この影響で無理やりインストールするとGUI表示ができなくなってしまうようだ。
Support timeframes for Unix legacy GPU releases対処
起動時に Escキーを押してリカバリーモードで起動
メニューから「root」を選択して以下を入力、nvidiaのドライバを削除する。$ sudo apt-get purge nvidia* $ sudo service lightdm stop今(2021年1月)現在はLinuxカーネル5.8では動かないようなのでドライバのインストールはあきらめるか、より古いバージョンのカーネルの使用を検討する。
まとめ
特に古いPCにnvidiaドライバを入れるときは、
そのドライバが使用するLinuxカーネルのバージョンに対応するか確認すべし。参考
Nvidia ドライバのせいで Ubuntu の GUI が起動しない時の対策
The installation of the NVIDIA display driver 340 fails in Kubuntu 20.10
ここがわかりやすかった。
- 投稿日:2021-01-11T13:53:36+09:00
fbterm で PDF を眺める
fbterm で PDF を眺める
w3m
(w3m-img
) はインライン画像を表示することができます. jfbterm の上で. と思っていたら最近は fbterm の上でも表示できるようです. ありがたい.
ranger
はそんなw3m
の力を借りて画像のプレビューができます. 設定ファイルを少しいじれば pdf や動画ファイルのプレビューもできます.ということは
ranger
は PDF を表示できるので私たちにもきっとできます. まずは PDF を画像にします.
ranger
はどのようにして PDF をプレビューしているのでしょうか. その答えは $HOME/.config/ranger/scope.sh にあります. そんなファイルがない場合はranger --copy-config=all
してください. 162 行目辺りに次のようにあります:$HOME/.config/ranger/scope.sh (162)## PDF application/pdf) pdftoppm -f 1 -l 1 \ ...なるほど PDF を画像に変換するには
pdftoppm
を使うようです. 詳しい使い方はman pdftoppm
で得られます. 得てください.PDF を画像に変換するコマンド$ pdftoppm -png PDFファイル名 画像ファイルのプレフィクス画像 (と化した PDF) を表示する
w3m
はインライン画像を表示できるのでw3m
のために HTML を書きます. しかし彼は css を読めないことに気をつけてください. HTML 4.01 Transitional 以下で書きましょう.w3m のための HTML<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>ほげほげ.pdf</TITLE> </HEAD> <BODY> <CENTER> <DIV><IMG SRC="path/to/image/page-01.png" WIDTH="80%"></DIV> <DIV><IMG SRC="path/to/image/page-02.png" WIDTH="80%"></DIV> ... </CENTER> </BODY> </HTML>そしてこの HTML を
w3m
で読めば画像に変換された PDF を眺めることができます.面倒なんじゃい
私たちはなんとか PDF を眺めることができました. しかし PDF を眺めたいと思うたびにこの操作を行うことはとても面倒です. 私たちにできる大抵のことはコンピュータにもできます.
次のようなシェルスクリプトを書きます. ファイル名は PDF-wo-Miru (PDF を見る) から pdfm.sh です.
pdfm.sh#!/bin/sh if [ $# -ne 1 ]; then echo "Usage: `basename $0` pdf-file" exit 1 fi TEMPDIR=`mktemp -d` TEMPBASE="$TEMPDIR/pdfm" TEMPHTML=`tempfile -s.html` pdftoppm -png $1 $TEMPBASE cat << EOF > $TEMPHTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> <HTML> <HEAD> <TITLE>$1</TITLE> </HEAD> <BODY> <CENTER> EOF find $TEMPDIR/*.png | sort | while read line do echo "<DIV><IMG SRC=\"$line\" WIDTH=\"80%\"></DIV>" >> $TEMPHTML done cat << EOF >> $TEMPHTML </CENTER> </BODY> </HTML> EOF w3m $TEMPHTML rm -rf $TEMPHTML $TEMPDIR完成したら
make pdfm
と実行して,生成された pdfm を $HOME/bin/ あたりにぶち込んで置きましょう.
おわりに
おわりです.
- 投稿日:2021-01-11T12:08:57+09:00
【CentOS 8】サポート短縮!RHEL互換のRocky Linuxが新リリースされるらしい
解説
CentOS Linux 8のサポートが従来の2029年5月31日から2021年12月31日に短縮され、Cent OS創設者のGregory Kurtzer(グレゴリー・クルツァー)により新RHEL(Red Hat Enterprise Linux)互換ディストリビューション” Rocky Linux ”が2021年中にはリリースされるらしいです。それから” Rocky Linux Project ”は新コミュニティが主導で開発が行われて居るようです。かなり大幅にサポート期間が短縮されたので、Cent OSを導入している企業等は新RHEL互換のLinuxディストリビューションに乗り換えて行くのではないでしょうか。
概要(Rocky Linux)
RHEL(Red Hat Enterprise Linux)プラットフォーム
商用環境、本番環境共に対応しているディストリビューションである。
Amazon Web Services(AWS)にも対応予定であるらしい。
GCP (Google Cloud Platform)Azure(Microsoft Azure)等は不明。開発:新コミュニティ
パッケージマネージャー:RPM DNF
デフォルトユーザーインターフェース:GNOME *
ライセンス:TBA *
プラットフォーム:x86-64
対応言語:多言語参考:
https://rockylinux.org/ja/ (コミュニティに参加できます)
https://ja.m.wikipedia.org/wiki/Red_Hat_Enterprise_Linux
https://www.google.com/amp/s/www.debugpoint.com/2020/12/rocky-linux/amp/
- 投稿日:2021-01-11T11:31:46+09:00
自動的に作成される仮想NICのMACアドレスをイベントドリブンに変更する方法
概要
Linuxでは簡単にNICのMACアドレスを変更できる。
仮にベアメタルマシンに対して直接Linuxをインストールしているような状況であっても同様。
物理的なMACアドレスは変わらなくても、OSとして認識する論理部分としてMACアドレスを上書きできる。一方で、現代のOpenStackやK8sなどでは、仮想的なNICが自動的に作成されるシーンが非常に多い。
こういったシーンで、仮想的なNICのMACアドレスをどーーしても変更したいときの方法について書きたい。もちろん仮想NICが作成後に、手動でそれを変更することは簡単に可能。
だが作成後に瞬時に通信開始するようなシーンの場合、それでは間に合わないこともある。何より面倒くさい。
なので自動的にやりたい。そういったときの方法を簡単ではあるが記事として残しておく。正直、そんな状況なんてなかなかないとは思うが・・・一応誰かの役に立てれば幸い。
※私の場合、OpenStack on OpenStackな環境を作っていて、こういう状況に見舞われたそしてもっと良い方法があれば是非教えてください!
方法
udevさんを使って自動的に変更してもらう。マジでudevさん便利すぎ。
以下のようなルールファイルを作成し、/etc/udev/rules.d/配下に置いておく。配置しておくだけで自動的に機能してくれる。
KERNEL
による条件式で対象NICを判定する。
- ここでは
*
なども使える。- しかし特定NICに特定MACアドレスを付与したいはずなので、多くはNIC名を直書きだと思う。
RUN
で任意のコマンドを実行可能。ここでipコマンドを叩いてMACアドレスを変更させる。$name
にはNIC名が代入されている。RUNと組み合わせて使用することで特定のNICを狙い撃ちすることが出来る。[macaddress]
には変更したいMACアドレスを指定する。ACTION=="add", SUBSYSTEM=="net", KERNEL=="[nic_name]", RUN+="ip link set dev $name address [macaddress]"上記は単一ルールファイルに複数行書いておくことも可能。MACアドレス変更系は1つのファイルにまとめて書いておいたほうが便利だと思う。
- 例
/etc/udev/rules.d/75-mac-spoof.rulesACTION=="add", SUBSYSTEM=="net", KERNEL=="vlan1000", RUN+="ip link set dev $name address 0a:1b:2c:3d:4e:5f" ACTION=="add", SUBSYSTEM=="net", KERNEL=="vlan2000", RUN+="ip link set dev $name address 00:11:22:33:44:55" ACTION=="add", SUBSYSTEM=="net", KERNEL=="vlan3000", RUN+="ip link set dev $name address aa:bb:cc:dd:ee:ff"