『set -x』コマンドで出力される「printf ~」という出力を抑制する

先日、後輩からset -xで出力される「printf ~」という以下のメッセージを抑制出来ないか?という話をされた。

[root@test-centos ~]# set -x
++ printf '\033]0;%s@%s:%s\007' root test-centos '~'
[root@test-centos ~]#
++ printf '\033]0;%s@%s:%s\007' root test-centos '~'
[root@test-centos ~]# echo "aaaaa"
+ echo aaaaa
aaaaa
++ printf '\033]0;%s@%s:%s\0...

ssh接続を経由してdiffを行う

先日、ちょっと仕事の関係で各サーバの設定ファイルの差異を確認することがあったのだが、その際にできないかな?と思って調べていた。
どうやら出来るようなので、3パターン紹介させてもらう。

1.普通のパスワード認証方式の場合

普通のパスワード認証方式の場合、以下のようにコマンドを実行する。

ssh ユーザ名@ホスト名 "cat リモート側のファイルパス" | diff - ローカル側のファイルパス
$ ssh root@192.168.0.20X "cat /etc/ssh/sshd_config" | diff - /etc/ssh/sshd_config
root@192.16...

ターミナルからパスワード入力無しでssh接続する3つの方法

sshコマンドでログインをする際、通常であればログインするユーザのパスワードを求められる。
セキュリティ上致し方ないものではあるのだが、時には煩わしいのも事実。スクリプトの中でssh接続をさせたい時には厄介だ。

という訳で、今回はこのパスワード入力無しでssh接続を行う方法について記述する。

1.鍵認証方式に切り替える

そもそも、ssh接続の認証方式はパスワード認証だけではない。
認証方式はいくつかあるが、そのうちの一つである鍵認証方式にすることで、パスワードを入力せずにログインすることが可能となる。

サーバ/クライアント側でそれぞれ設定が必要となるが、今回紹介する3つの方...


grepでコメント行と空白を除外する

grepでコメント行と空白を除外する場合、以下のようにすると良いだろう。

grep -v -e '^$' -e '^#' 対象のファイル

一応解説をすると、-vで検索条件に該当する行を除外して出力するよ、という意味。
-eで複数の条件で検索するという意味で、'^$'は正規表現で行頭に行末が来ている場合、'^#'で行頭にコメントアウトがある場合を指定している。

実際に、crontabで実行した結果がこちら。

$...

ssh越しにフォルダをマウントできる『sshfs』コマンド

先日、ちょっと事情があってsshを経由してisoファイルをマウントさせたいな、ということがあったのだが、そんな時に使えるのがこのsshfsコマンドだ。
使い方は簡単で、ssh接続先のマウントしたいフォルダと、それをマウントさせるローカル側のマウントポイントを指定するだけ。isoファイルは直接マウント出来ないので、一度フォルダをマウント後、別途mountコマンドでマウントすればいい。

1.インストール

インストールは簡単。以下のコマンドを実行するだけだ。

RHEL系の場合

$ sudo yum install sshfs --enablerepo=epel

...

sshコマンドでパスワードをオプションとして入力出来るようにする『sshpass』

ターミナル(コンソール)からコマンドでSSH接続を行う際にsshコマンドから行うと、通常であれば以下のようにパスワードの入力を求められる。

$ ssh root@192.168.0.XXX
root@192.168.0.XXX's password:

sshコマンドを利用した場合、通常の利用方法ではログインを行うSSHサーバとの通信を鍵認証にでもしない限りはパスワードを求められてしまう。
このパスワードの入力をsshコマンドと同時にできるようにするのが、今回紹介するsshpassコマンドだ。

$ # sshコマンドだけの場合
$ ssh root@192.168.0.209...

シェルスクリプトでevalコマンドを用いた変数の2重展開

シェルスクリプトを作成する際、事前に定めた変数名をスクリプト内で他の変数に代入し、それを展開・利用したいシチュエーションもあるだろう。
そんな時は、evalコマンドを用いて変数を2重展開することで対応可能だ。

例えば、以下のようなスクリプトを作成したとする。

#!/bin/sh
# 変数 VALに値が入力されている
VAL="test"

# 変数 EVAL_VALに、変数名である「VAL」という文字列を入力
EVAL_VAL="VAL"

# 変数 EVAL_VALを呼び出す
echo $EVAL_VAL

これをそのまま実行した場合、当然ながら出力される値は「VAL」となる。

...
Vyatta/VyOSで利用するキーボードを日本語配列キーボードにする

Vyatta/VyOSをインストールする際、キーボードの種類について聞かれないため、英語キーボードのままになっている人も多いだろう。個人的には英字キーボードを利用しており、またVyatta/VyOSにはSSH経由でアクセスすることの方が多いのであまり困ることが無いのだが、VMware ESXi上にインストールして、日本語配列のノートPCで作業をする際は確かに困る。「@」の位置とかが違うし、「|(パイプ)」なんかは入力が出来ない。
というわけで、今回はそんなVyatta/VyOSで日本語キーボードを利用する設定について記述する。

1.『set console keymap』を利用する

V...


自作ルーターの構築に最適な小型コンピュータボード7選

2017/06/05 追記

以前記事を書いた際にはなかったのだが、Amazonで東雲社(しののめしゃ)という会社の販売しているベアボーンキットなのだが、LANポートが4個とか付与されてて、もうルーターとして使ってくれと言わんばかりものが販売されている。x86/x64系のOSもインストールできるので、VyOSやpfSenseなども簡単にインストールできる。今から構築するなら、この辺を購入することを検討したほうが良いだろう(もしくは、個人的なおすすめとしてPC Engineの出してるAPU系)。


HeidiSQLでWindowsからMySQLサーバにSSH経由で接続する

WindowsからMySQLサーバにクライアントソフトを用いてアクセスする場合、通常はMySQLデータベース側でリモートアクセスの許可をしておく必要がある。
しかし、外部からの接続を許可していないMySQLにクライアントソフトからアクセスしたい時もあるだろう。そんなときは、MySQLにSSHを経由してログインするMySQLクライアントソフトを用いるとよい。

今回は、そんなSSH経由でMySQLを操作することができるクライアントソフト『HeidiSQL』で、SSH経由でMySQLに接続、操作を行う手順を説明する。

1.HideiSQLのインストール

まずは、HideiSQLのダウン...


ログイン先を選択して自動ログインを行うTeratermマクロ(ユーザスイッチ対応・マクロでのログ強制管理etc…対応版)

2017/02/18

バージョン管理するのもつらいし、ソース等はGitHubに移動することにした。 利用するのであれば、そちらを参照してもらったほうがいいと思う。


以前記述した、ログイン先をリストボックスで選択して自動的にログインするTeratermマクロを改修・改良した。
といってもそんなに大きい変更はしておらず、以下の内容について変更を加えただけだ。

  • ログインユーザから管理者ユーザへのスイッチ(「su」もしくは「sudo su -」コマンドでの対応)
  • ログイン...

findstrコマンドで覚えておきたい使い方8個

UNIX系OSで検索を行うコマンドといえばgrepだが、Windowsにもそれに相当するコマンドがある。
それが、今回紹介するfindstrコマンドだ。このfindstrコマンドについて、覚えておきたい使い方を8個紹介する。

1.基本的な使い方

基本的には、UNIX系OSのコマンドであるgrepと同じように利用することができる。以下のコマンドで、ファイルの中から特定の文字列を持つ行を出力する。

findstr 検索したい文字列 検索したいファイル

なお、文字コードに問題があって正常に検索出来ない場合は、typeとパイプで繋げると良いだろう。

findstr 検索したい...

PowerShellでsed相当の処理を行う

LinuxやUNIXには、ファイルや変数、文字列の置換を行えるsedというコマンドが用意されている。
それと同じことをPowerShellで行う場合、どうすればよいのだろうか。

1.特定の文字列を置換する

基本の使い方である、特定の文字列をただ置き換える場合は「-replace」を利用すればいい。

Get-Content .\test.txt | % { $_ -replace "置換する文字列","置換後の文字列" }

2.上書き保存する

sedの「-i」オプション相当の処理を行わせるには、ただパイプで「Set-Content」「Out-File」を行えば良い、...


自作ルーターに使えるARM搭載のルーター用基板『Banana PI BPI R1』を試してみた

先日、APU1.Cという基板を用いてVyOSを搭載した自作ルーターを作成した。APU1.CはAMD64が搭載されているため、何の問題も無くVyOSがインストールできたのだが、今回紹介する『Banana PI BPI R1』はCPUがARMの基板だ。

AliExpress.com Product - Freeshipment BPI-R1 Router+Antenna+SD card , Original Banana pi Opensource router board R1 Freeshipment

通常のx86、x64のCPUを搭載した基板よりは、Raspberry...


APU1.Cに無線LANアンテナを取り付けてVyOSの無線LANルーターを構築

先日、APU1.Cというルーター用基板にVyOSのインストールを行ったのだが、今回はそれに無線LANアダプタとアンテナを増設した。

増設したパーツ

VyOSで利用する無線LANアダプタは、当然ながらLinuxのドライバで動作するため、こちらの内容を元に動作するアダプタを選定する。
2015年1月現在、APとして802.11acが動作するドライバが存在しないため、802.11nで動作するものを選択。
Intelの無線LANアダプタにおいては、APとして動作するものが少ないため、安定のAtherOS製アダプタを用いた。

* [ASI AW-NB037H WiFi-Blu...

catコマンドで覚えておきたい使い方6個

LinuxやUNIXを使ってれば、必ず使うcatコマンド。
単純にファイルの中を見るだけのコマンドなので、自分もその動作をあまり調べてなかった。

今回は、そんなcatコマンドで覚えておきたい使い方をまとめてみる。
なお、検証に利用したOSはCentOS 7になる。


PowerShellでwatch相当の処理を行う

Linuxではおなじみのwatchコマンド。
これと同等の事をPowerShellで実行する場合、Whileコマンドをうまく組み合わせる事で実現可能だ。

while ($true -eq $true) { 実行させたいコマンド ; sleep 1 ; clear}

実際に実行させた例が以下。
1秒ごとにディレクトリ配下のファイル一覧を取得させている。

while ($true -eq $true) { Get-...

PowerShellでhead,tail相当の処理を行う

LinuxやUNIXを利用している方であれば特に説明する必要も無いが、UNIX系OSにはhead、tailという「最初(最後)から数えて◯行分を出力する」というコマンドが存在する。
特にtailは、fオプションと組み合わせてログの監視を行う際に非常に重宝する。

これと同じことをPowerShellで行う場合は、以下のようにする。

1.headコマンドの場合

headコマンドに相当する操作をPowerShell2.0で行う場合は、以下のようにする。

(出力させるコマンド)[0..出力させたい行数-1]

実際に実行した際の例が以下。頭から数えて5行出力させている。

PS...

Windowsで容量の大きいファイル&ディレクトリを調べる

以前、Linuxで容量の大きいファイル、ディレクトリを調べる方法について記述したので、今回はWindows版。PowerShell、コマンドプロンプトでの調べ方を紹介する。

1.容量の大きいファイルを調べる

Windowsのコマンドプロンプトで容量の大きいファイルを調べる場合、forfilesコマンドを用いると良いだろう。
とは言え、容量の大きいファイルを上から順に何個、というのはコマンドプロンプト上から一行で出力は難しい。そのため、何バイト以上のファイルのみ出力させる方法で確認をする。
以下の例では、1GB以上のファイルのみ出力するように指定している。

forfile...

Windowsのコマンドプロンプトでファイルのフルパスを取得する

以前、Linux/UNIXでのフルパスの取得方法について記述したので、今回はWindowsのコマンドプロンプト版。
ファイルのフルパスを取得する方法について記述する。

単純にフルパスだけを取得する場合、dirコマンドを用いればいい。

dir /b /s 調べたいディレクトリのパス

しかし、dirコマンドでは他の情報(更新日やファイルサイズなど)とセットでのフルパス取得は難しい。
それらの情報が欲しい場合は、forfilesコマンドを用いる。


VyattaやVyOSのデフォルトユーザはvyatta(vyos)だが、別のユーザを使ったり、パスワードの変更が必要な事もある。
そういった場合は、どうすればよいのだろうか。

1.ユーザの作成

ユーザを新規で作成する場合は、以下のコマンドで行う。

$ configure
# set system login user ユーザ名
# set system login user ユーザ名 authentication plaintext-password パスワード

認証方式をパスワードではなく、公開鍵認証にするには、以下のようにする。

# set system login...

※あくまでも、一時的な対応(期間が1日、2日だけ足りないなど)のために記述しています。期間を超えて利用する場合は、正式にライセンスを購入することをおすすめします。

先日、だいぶ前にインストールして色々設定して放置していたESXiの評価版の利用期日が1日しか無く、再インストールも面倒だったので、一時的に延長することが出来ないか?
と調べてみたところ、ライセンス期間を延長することが出来たので備忘録として残しておく。

上にも書いているが、あくまでも一時しのぎのための方法であり、日常的に利用する場合はちゃんと無償版ライセンスを取得するか、正規品の購入をお願いします。

1.ライセンス関連フ

...
Vyatta/VyOSでインターフェイスのブリッジを作成する

Vyatta/VyOSで無線LANのアクセスポイントを構築する際、優先LANとブリッジさせたいと考えたので、その手順と注意点について記述する。
今回は、以下のような手順で対応する。

  1. ブリッジの作成
  2. 有線LANアダプタ(eth0)のブリッジへの参加
  3. 無線LANアダプタ(wlan0)のブリッジへの参加

1.ブリッジの作成

まずは、ブリッジの作成から行う。
以下のコマンドを実行する。

configure
set interfaces bridge br0
set interfaces bridge bro description HomeBridge
commit
s...

VyOSのアップグレード方法

しばらくVyOSを触っていなかったのだが、どうやらバージョンの1.1.0がリリースされていたようだ。
そこで、インストール済のVyOS 1.0.0を1.1.0にアップグレードしてみることにした。

VyOSのアップグレードについては、公式Wikiにもその手順がある。
この手順通りに作業を進めていこう。といっても、「add system image」コマンドにアップグレードしたいバージョンのISOイメージのURLを渡すだけなんだけど。

まず最初に注意したいのが、上記のWikiにもその記述があるが、apt-get dist-upgradeは使っちゃダメだということ。
あくまでも...


APU1.CとVyOS(Vyatta)で自作ルーター

以前から、自宅用のルーターをVyOS(Vyatta)で構築したいと考えていたのだが、通常のx86のマザーボード基板(Core iシリーズが乗るようなやつ)を利用すると電気代がかかるし、ちょっとなぁ…と考えていた所、LANコネクタを3ポート搭載したx86対応のPCEngines社製の基板、APU1.Cというものを知った。

ALIXと呼ばれていたシリーズの後継機らしい。下の画像を見てもらえればわかるが、大きさもかなり小さい。

TDPもせいぜい6W程度と省電力で、USBも搭載しているので無線LANアダプタの増設も可能。miniPCIの無線LANカードを増設し、外付けの無線LANアンテ...


Concurrent RDP Patcherを使って、Windows 7でシャドウセッションを利用する

あまり知っている人は多くないのかも知れないが、Windows Serverのリモートデスクトップにはシャドウセッションという機能がある。
ディスプレイとリモートデスクトップで同じ画面を操作する機能で、イメージとしてはVNCサーバとクライアントを用いた際のような感じだ。

で、この機能、基本的にサーバOSにしか搭載していないものなのだが、Concurrent RDP Patcherを用いる事でWindows 7でも利用可能になる。
…といっても、利用するコマンドの関係でWindows 7 Professional以上のエディションである必要があるが。

まず、Concurrent RDP...


先日、VMware ESXi上でコマンドやスクリプトを定期実行させる必要があったので、ちょっと調べてみることにした。
一応、VMware ESXi上で動いているbusyboxでもcronが利用できるようだ。

しかし、ESXiにはcrontabコマンドが存在していないため、cronを利用する場合は設定ファイルである「/var/spool/cron/crontabs/root」を直接編集する必要がある。
また、これらの設定も再起動後にはクリアされてしまうため、ESXiの再起動後にも設定を有効にする場合は、再起動と同時に上記設定ファイルに設定を再度書き込むようにする。

1.ESXi再起動

...
WindowsServer 2008 R2/2012 R2でシリアルコンソール接続を有効にする

前回、CentOS7でシリアルコンソール接続を有効にしたので、今回はWindows Server 2008 R2/2012 R2で設定を行う。
Windowsでシリアルコンソール接続をする場合、Windows Server 2003からサポートされたEMS(Emergency Management Services/緊急管理サービス)を利用すると良いようだ。早速、やってみよう。
まぁ、そもそもWinowsだったらリモートデスクトップ接続を行う前提の方が多い。一応、接続 > コマンドプロンプトにログイン、バッチファイルやPowerShellの実行はできるので、使えなくはないが…これに頼る事は...


CentOS7でシリアルコンソール接続を有効にする

先日、ESXiの仮想マシンに対しネットワーク経由でシリアルコンソール接続を行えるようにしたので、今回はそのゲストOSとして、CentOS 7をシリアルコンソール接続出来るようにする設定を記述する。
ESXi上の仮想マシンでリモートシリアルコンソールを有効にする方法については、こちらを参照してもらいたい。

1.CentOS7のインストール

まずはCentOS 7のインストール。インストールはMinimalインストールで行う。
インストール方法については、こちらを参考にしてもらいたい。

2.Grub2の設定を変更する

CentOS7では、ブートローダーがGrubからGr...


ESXi上の仮想マシンでネットワークシリアル接続を有効にする

無償版のESXiでは利用出来ないが、ESXiでは仮想マシンに対してネットワーク経由でシリアル接続を行う事が出来る。
今回は、それを60日間の評価版で実際に設定してみることにする。

利用するのは、ホストとしてESXi 5.5 Update2(60日評価版)、仮想マシンとして、VyOSを用いる(仮想マシン側で設定不要なので)。
なお、ESXiのIPアドレスは192.168.0.225、リモートシリアルコンソールへはtelnetで接続するものとし、ポートは8001を利用する。

1.仮想マシンの作成

ここについては、特に詳細は記述する事も無いだろう。
通常どおり仮想マシンを作成する。...