学習したことや試行錯誤を後で再利用できるように自分のためにまとめたものです。 特にオープンなIT技術は世界の一人ひとりの活動によって支えられていると思います。 メモの内容が微力ながらそれに貢献できるのではないかと思い公開しています。 記述内容に誤りもあるかもしれません。試す方はご自身で十分検証し自己責任でお願いします。リンクは自由です。
投げ銭
★当サイトへの投げ銭(PayPal)★
LINK
人気の投稿(1ヶ月間)
-
Linuxデスクトップ環境でThunderbird 78.9.0を、IMAPサーバー(Dovcot)のクライアントとしてセットアップした。 これでIMAPサーバーに保存されているメールがThunderbirdで操作できるようになった。 ところが、Thunderbirdはデフォルト...
-
2017年4月12日 いくつか説明追加 YAMAHA ルーターの「NAT」について勝手なまとめ 以下、NATなどの定義のみを扱っている。 定義したNATは、意図される動作のために、しかるべきインターフェイスに掛けられる必要がある。 しかしここではインターフェイスへの...
-
使用しているdovecotのバージョンは以下の通り。 # dovecot --version 2.0.9 CentOS 6マシンで動作させている。 ■DovecotへのIMAP接続でタイムアウトする問題への対処 ThunderbirdをIMAPサーバー(dovecot)のクライア...
-
■悩まされた問題について NTT西日本のNGN(IPv6)網において、RTX1210を用いてIPsec VPNを構築していた。 問題なく通信できると思っていたが 一部のパケットがうまく通らなかった。 それはローカルネットワークにある VOIPゲートウェイからのパケット...
-
RTX1210配下の端末において指定したURLへの通信のみ、指定した経路(ppなど)を通るようにする。 それには、ドメイン名(FQDN)で指定するフィルタ型デフォルトルートを設定すればよい。 もし、その指定するpp経路が固定アドレスなら、固定アドレスで相手先と通信できることに...
-
IPsecトンネルを2本用意して、一方をメインとし、他方をバックアップとして、 障害時に自動的に切り替わるように設定する方法の概略 実験して試したところ、以下の設定でうまく切り替えることができたので肝心なところをメモしておく。 ここでは、次のような構成をイメージして...
-
CentOS 5.7(64bit)に、iaxmodemとhylafaxをインストールする手順 HylaFaxというFAXサーバとそのクライアントソフトウェアを使えば、ネットワークを通じてWindowsマシンなどから手軽にFAXを送信することができるようになる。 さらに、Hy...
-
<目次> ・既存のプロジェクトに CsvHelper を導入 ・SHIFT-JISを利用できるように設定 ・CSVファイルを読み込んで汎用の型にデータを格納するメソッドの作成 ■準備 <CsvHelperの導入> 1、Visual Studio 2017 C...
-
■タイムゾーンの確認と設定 ◯設定されているタイムゾーンの確認を行った。 # timedatectl Local time: Wed 2020-12-02 04:13:46 UTC Universal time: Wed 2020-12-02 ...
-
正規表現の最短一致の方法 次のような内容のテキストファイルがあるとする。 (セミコロンで項が区切られている。) abc-1234; def-1234; abc-5678; def-5678; abc-9012; def-9012; このうち、abcから始まる項目だけ...
Ad
Ad
投げ銭
★当サイトへの投げ銭(PayPal)★
2019年2月19日火曜日
【Linux CentOS 7】ディレクトリの内容を全てzipファイルに圧縮する方法
指定したディレクトリの内容を再帰的に取り出して、全てzipファイルに圧縮する。
# zip -r output.zip directoryname
<参考>
・ZIP command in Linux with examples
< https://www.geeksforgeeks.org/zip-command-in-linux-with-examples/ > 2019年2月19日
2019年2月18日月曜日
【Linux CentOS 7】mount.cifsコマンドでNASにマウントしたときの試行錯誤メモ【cifs-utils 6.2】
更新 2023年3月4日
Linux CentOS 7の mount.cifs コマンドでマウントしようとするがなかなかうまくいかなかったのでメモしておく。
○GUIで失敗
最初、デスクトップ環境MATEに標準のGUIから「Windows共有」を選んで接続しようとしたが、
ユーザーとパスワードを聞かれてうまくいかなかった。
NASには認証設定がされていないのでそれらを入力する必要はないと考えた。
○mount.cifsの試行錯誤
そこで、mount.cifsコマンドを用いるが、こちらもなかなかうまくできなかった。
ネットを調べてみると、vers、sec、username、password オプションを指定すれば良いのではないかと思い当たったが、
その通りにやってみてもうまくいかない。
結局、一番最後に記しているオプションの組み合わせでうまくマウントできた。
うまくマウントできたNASは、IIS7が搭載されているらしいことがわかった。
たしか、ファイルサーバーに特化したWindows Serverが載っていたように思う。
遠隔地にあるものなので型番もわからない。
多分、接続先のNASの種類によって設定の組み合わせが違うのではないかと思う。
使用しているパッケージなどのバージョンは次の通りである。
cifs-utils バージョン 6.2
カーネル バージョン 3.10.0-693.17.1.el7.x86_64
<失敗例>
×
# mount.cifs -o vers=1.0,sec=ntlmssp,username=guest,password="" "//192.168.1.5/public" /mnt/nas
mount error(5): Input/output error×
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
# mount.cifs -o vers=3.0,sec=ntlmssp,username=guest,password="" "//192.168.1.5/public" /mnt/nas
mount error(95): Operation not supported×
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
# mount.cifs -o vers=4.0,sec=ntlmssp,username=guest,password="" "//192.168.1.5/public" /mnt/nas
mount error(22): Invalid argument
Refer to the mount.cifs(8) manual page (e.g. man mount.cifs)
◎次のコマンドでうまくマウントすることができた。
# mount.cifs -o vers=2.0,sec=ntlmssp,username=guest,password="" "//192.168.1.5/public" /mnt/nas
ポイントは、以下のオプションである。
vers=2.0,sec=ntlmssp,username=guest,password=""もしこれでうまくいかない場合、
versで指定される番号を、上記の失敗例のように色々替えてみると良いかもしれない。
ネットの情報には、vers=3.0や、ver=1.0 という設定をしているものもあった。
また、sec=ntlm という指定もあった。
<さらに別のNAS>
一方で、別のNASでは、以上の成功例のオプションでは、つぎのようなエラーが発生した。
mount error(112): Host is downRefer to the mount.cifs(8) manual page (e.g. man mount.cifs)
その場合、ver=2.0のところを、ver=1.0に変えるとうまく接続することができた。
以上
<参考>
・CIFS mount in FSTAB does not work after update
< https://askubuntu.com/questions/994872/cifs-mount-in-fstab-does-not-work-after-update > 2019年2月18日
2019年2月6日水曜日
【Linux CentOS 7】bashの配列操作について
bashの配列操作
この配列Kに要素("abc") を順に2回加えて、
最後に配列の要素を表示するという処理を行っている。
注意点は、配列というものは、""で括った要素をさらに小括弧()で括ったものだということである。
さもなければ、次のように配列の要素ではなくなってしまう。
■ファイルに保存された要素を配列に格納して表示する手順
次のようなファイルがあるとする。
# cat test.txt
次の手順で、上記ファイルに保存された要素を配列に順に格納して、
最後に配列の内容を一覧表示させる。
# ArryADDR=() ; for ADDR in `cat test.txt` ; do ArryADDR+=("$ADDR") ; done ; echo ${ArryADDR[@]}
・配列を使用する
○配列に要素を加える方法
$ K=("vvv" "123" "456") ; K+=("abc") ; K+=("abc") ; echo ${K[@]}
vvv 123 456 abc abc上記では、最初に配列Kを用意して、要素を三つ("vvv" "123" "456") 作成している。
この配列Kに要素("abc") を順に2回加えて、
最後に配列の要素を表示するという処理を行っている。
注意点は、配列というものは、""で括った要素をさらに小括弧()で括ったものだということである。
さもなければ、次のように配列の要素ではなくなってしまう。
$ K=("vvv" "123" "456") ; K+="abc" ; K+="abc" ; echo ${K[@]}
vvvabcabc 123 456
○配列の配列としての取り扱い方
せっかくの配列Kなのに、${K}として扱うと文字列になってしまった。
$ K=("vvv" "123" "456") ; K+="abc" ; K+="abc" ; echo ${K}
vvvabcabc
そして要素数は文字数になってしまった。
$ K=("vvv" "123" "456") ; K+="abc" ; K+="abc" ; echo ${#K}
9
次のように、[@]を変数名に付加すると配列として扱われる。
$ K=("vvv" "123" "456") ; K+="abc" ; K+="abc" ; echo ${#K[@]}
3
■ファイルに保存された要素を配列に格納して表示する手順
次のようなファイルがあるとする。
# cat test.txt
abc@abc
def@def
ghi@ghi
次の手順で、上記ファイルに保存された要素を配列に順に格納して、
最後に配列の内容を一覧表示させる。
# ArryADDR=() ; for ADDR in `cat test.txt` ; do ArryADDR+=("$ADDR") ; done ; echo ${ArryADDR[@]}
abc@abc def@def ghi@ghi
<参考>
・配列を使用する
< https://shellscript.sunone.me/array.html > 2019年2月6日
2019年2月4日月曜日
【Linux CentOS 6】ファイルの操作イベント取得を行うinotifywaitの動作テスト【inotify-tools 3.14】
inotifywaitの動作テスト
下記コマンドでは、inotifywaitコマンドに複数の引数を与えて、
監視の仕方、結果出力の仕方、監視対象を指定している。
<使用したオプションの説明>
-e 監視するイベントの種類を指定する。(CREATE でファイル作成をキャッチ)
-m 監視中に該当するイベントが発生し処理が終わってもさらに続けて監視し続ける。
-r ディレクトリが作成されると再帰的にファイルを探索する。
--format イベントがあったことを通知する際の出力フォーマットの指定
最後に、監視対象のパスを指定
○ターゲットディレクトリを監視状態にした。
# /usr/bin/inotifywait -m -r -e CREATE --format "%w%f" /root/test
○動作テストを行った。
上記画面は、待機中となるため、別のコンソールからテストする。
テスト用ディレクトリに移動した。
# cd /root/test
テスト用ファイルは、一つ階層上の/rootにbディレクトリにまとめて用意した
# ls ../b
# cp ../b . -R
○結果
すると、上記の待機中画面に次のように、CREATEイベントの詳細が表示された。
○イベントの発生結果一覧をwhileで処理
# /usr/bin/inotifywait -m -e CREATE --format "%w%f" -r /root/test | while read NEWFILE || [ -n $NEWFILE ] ; do echo $NEWFILE ; done
前例と同じbディレクトリをコピーしてみた
しかし、上記のように、4つあるファイルのうち3つのCREATEイベントしかキャッチできなかったようである。
また、サブディレクトリをワンライナーなどのコマンドで一気に作成しても、
最初のサブディレクトリの新規作成イベントしか取得できなかった。
これはinotify の処理の限界なのだろう。
サブディレクトリがツリーに作成されたときに、
watchもまたこのサブディレクトリに作成され再帰監視処理に備えられようとするものの、
この準備が完了するまでにファイルや別のサブディレクトリが作成されてしまう可能性がある。
すると、サブディレクトリに作成されたファイルやディレクトリの作成イベントを取りこぼしてしまう現象が発生するという理由らしい。(†1)
こういう性質を知ってうまく使えばいいと思う。
ディレクトリにファイルを追加していく際のイベント取得は問題ないのだろう。
サブディレクトリの作成時には上記のことを念頭に置いておけばいい。
<参考>
1、inotify missing events
< https://stackoverflow.com/questions/15806488/inotify-missing-events > 2019年2月4日
2、inotify-toolsでファイルやディレクトリを監視する
< https://qiita.com/stc1988/items/464410382f8425681c20 >2019年2月4日
3、inotifywaitコマンドの使い方
< https://qiita.com/hana_shin/items/9e03ad7a40b4fd7afb67 >2019年2月4日
4、[Linux] inotifywaitを使ってファイル更新時に任意のコマンドを実行する
< https://qiita.com/sonodar/items/ddeeb98525ef4c03d48e >2019年2月4日
5、BASHのwhile readで最終行が処理されない問題の解決方法
< https://qiita.com/Ets/items/a7fa24b138b8ee883dac > 2019年2月4日
6、if 文と test コマンド
< https://shellscript.sunone.me/if_and_test.html > 2019年2月4日
下記コマンドでは、inotifywaitコマンドに複数の引数を与えて、
監視の仕方、結果出力の仕方、監視対象を指定している。
<使用したオプションの説明>
-e 監視するイベントの種類を指定する。(CREATE でファイル作成をキャッチ)
-m 監視中に該当するイベントが発生し処理が終わってもさらに続けて監視し続ける。
-r ディレクトリが作成されると再帰的にファイルを探索する。
--format イベントがあったことを通知する際の出力フォーマットの指定
最後に、監視対象のパスを指定
○ターゲットディレクトリを監視状態にした。
# /usr/bin/inotifywait -m -r -e CREATE --format "%w%f" /root/test
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
○動作テストを行った。
上記画面は、待機中となるため、別のコンソールからテストする。
テスト用ディレクトリに移動した。
# cd /root/test
テスト用ファイルは、一つ階層上の/rootにbディレクトリにまとめて用意した
# ls ../b
abc.txt abcd.txt abcde.txt abcdef.txtテスト用ファイルの入ったbディレクトリを、カレントディレクトリに再帰コピーした。
# cp ../b . -R
○結果
すると、上記の待機中画面に次のように、CREATEイベントの詳細が表示された。
/root/test/b
/root/test/b/abc.txt
/root/test/b/abcd.txt
/root/test/b/abcde.txt
/root/test/b/abcdef.txt
○イベントの発生結果一覧をwhileで処理
# /usr/bin/inotifywait -m -e CREATE --format "%w%f" -r /root/test | while read NEWFILE || [ -n $NEWFILE ] ; do echo $NEWFILE ; done
Setting up watches. Beware: since -r was given, this may take a while!
Watches established.
/root/test/b
/root/test/b/abcd.txt
/root/test/b/abc.txt
/root/test/b/abcde.txt
前例と同じbディレクトリをコピーしてみた
しかし、上記のように、4つあるファイルのうち3つのCREATEイベントしかキャッチできなかったようである。
また、サブディレクトリをワンライナーなどのコマンドで一気に作成しても、
最初のサブディレクトリの新規作成イベントしか取得できなかった。
これはinotify の処理の限界なのだろう。
サブディレクトリがツリーに作成されたときに、
watchもまたこのサブディレクトリに作成され再帰監視処理に備えられようとするものの、
この準備が完了するまでにファイルや別のサブディレクトリが作成されてしまう可能性がある。
すると、サブディレクトリに作成されたファイルやディレクトリの作成イベントを取りこぼしてしまう現象が発生するという理由らしい。(†1)
こういう性質を知ってうまく使えばいいと思う。
ディレクトリにファイルを追加していく際のイベント取得は問題ないのだろう。
サブディレクトリの作成時には上記のことを念頭に置いておけばいい。
<参考>
1、inotify missing events
< https://stackoverflow.com/questions/15806488/inotify-missing-events > 2019年2月4日
2、inotify-toolsでファイルやディレクトリを監視する
< https://qiita.com/stc1988/items/464410382f8425681c20 >2019年2月4日
3、inotifywaitコマンドの使い方
< https://qiita.com/hana_shin/items/9e03ad7a40b4fd7afb67 >2019年2月4日
4、[Linux] inotifywaitを使ってファイル更新時に任意のコマンドを実行する
< https://qiita.com/sonodar/items/ddeeb98525ef4c03d48e >2019年2月4日
5、BASHのwhile readで最終行が処理されない問題の解決方法
< https://qiita.com/Ets/items/a7fa24b138b8ee883dac > 2019年2月4日
6、if 文と test コマンド
< https://shellscript.sunone.me/if_and_test.html > 2019年2月4日
登録:
投稿 (Atom)
投げ銭
★当サイトへの投げ銭(PayPal)★