サイトマップ » S
-
systemctl で UNIT一覧画面 ACTIVE列のfaild行 を消したい (更新したい)
通常、ステータスがエラー状態(Faild)なら、エラー状態を調査して復旧させるのだが、もう、そのサービス(プロセス)は使わないとなった場合がある。レアケースだと思うが。このような事象頻度は、そうそう無いのでOS再起動とかでやり過ごしていたが、安易にOS再起動出来ないサーバーで起こってしまったので、調べてみた。
このサービス(プロセス)は使わないので、# systemctl stop sav-update.service# systemctl disable sav-update.serviceを実行するも、
UNIT LOAD ACTIVE SUB DESCRIPTION● sav-update.service loaded failed failed "Sophos Anti-Virus update"
と、エラー表示が残り続けたので、
# systemctl reset-failed sav-update.serviceとする事で、除外された。
-
SSHのポートフォワード機能を使って、インターネット(クラウド)上にあるDBとレプリケーションする
インターネット(クラウド)上のサーバー間でセキュリティを考慮して通信させたい
【シチュエーション】
インターネット(クラウド)上のサーバー間で(バックエンドNW:裏LAN を使わずに)・ DBのレプリケーションしたい・ バックアップサーバーへ日々、バックアップを行いたいなどなど、インターネット上に(素で)3306/TCPや873/TCPを使わない為には・・・
【方法】
Tunnelを張る。ぱっと思いつくアプリは・ OpenVPN・ stunnel・ OpenSSH
【(比較的簡単な)OpenSSHを使ってトンネルを張る】
最近はSSHがデフォでインストールされているし、追加インストール無で済む。しかし、root権限レベルの設定変更は必要だが、googleと設定方法はたくさんHitするし、比較的、簡単に設定できると思う。googleなら、「SSH」「ポートフォワーディング」
【設定を行うにあたり】
OpenSSHの本来の使われ方は、対象機器に(Secureに)ログインする為に利用。ログイン後は、対象機器で色々なコマンドを(権限の範囲で)実行可能。
〇 対象機器の管理者=SSHログイン利用者 普通に対象機器のアカウント/パスワードを作成すれば良い。
リモート端末上では、MySQL TCP/IP Socket 127.0.0.1:3306 がListen状態の場合、トンネル ローカル端末(127.0.0.1:33306)→リモート端末(127.0.0.1:3306) フォワード設定
ちょっと難しいですが、SSH接続(通信方向: ローカル端末 -> リモート端末トンネル通信方向: ローカル端末 -> リモート端末トンネル通信方向で、設定が微妙に異なりますので注意が必要です。[Windows機でTeratermなら]① 事前設定 Teratermのメニューバー [設定] ->
-
shellと設定ファイル(ini形式)でスクリプトを書く時は、crudini が便利
表題に書いてしまったが、shellスクリプト + 設定ファイル(ini形式)でスクリプトを書くには、crudini を使うと便利だ。
RedHat系であれば、dnf install crudini
RasPiOSやarmbianでは、apt install crudini
など、crudiniはパッケージとして用意されている。※ 他のディストリビューションは未確認
例えば、pingを実行するスクリプトを書くとすると、
【/home/user/test.sh】
※ 7行目の部分(TARGET=)で、バッククォートを入れていますが、何故か表示上消えてしまいます PHPMYFAQの仕様だと思うのですが・・・・
#!/bin/bashCRUDINI=/usr/bin/crudiniINIFILE=/home/user/test.inisource <($CRUDINI --get --format=sh $INIFILE common)TARGET=(`echo $TARGET|xargs`)for tgt in ${TARGET[@]}do source <($CRUDINI --get --format=sh $INIFILE
-
samba 隠しファイル(.から始まるファイル)が隠れない
【結論】
Windows側のエクスプローラの表示設定「隠しファイルを表示する」に設定していると、表示されます。「隠しファイルを表示しない」にすると非表示になりますので、samba側は正しく機能しています。
Windowsのデフォルト状態では、「隠しファイルは表示しない」となっているので、一般の人は非表示状態となっていますが、IT系よりの人は、「隠しファイルは表示する」ように設定変更していたりするので、sambaが正しく機能していないと勘違いしてしまいます。
【詳細】
smb.confのデフォルト設定では、hide dot files = yes (既定値)となっているので、.(ドットから始まる)ファイルに対しては、隠しファイル属性となっています。.(ドットから始まらない)ファイルに対しては、hide files =の設定で追加します。しかしながら、双方、隠しファイル属性となるだけで、Windows側の表示設定を変更すると表示されるようです。
【「隠しファイルは表示する」に設定していてもsmb.conf設定で隠れないか?】
似たような設定に、veto files =があります。こちらは、一覧することもアクセスすることもできないファイルとディレクトリのリストを指定します。こちらで設定すれば、表示されません。しかしながら、"veto files =" で設定すると「知っている人はアクセス出来る」ような事は出来ません。
-
systemctl edit (drop-in snippet) を使う時は、"systemctl show" で確認すべし
サーバーに複数のIPアドレスを割り当てている場合に、明示的にListenIPアドレスを指定したい場合がある。例えば、postfixで、
inet_interfaces = 127.0.0.1, 192.168.1.1
等を設定した場合、OS再起動するとpostfixが起動に失敗するケースに遭遇する。ネットワークインターフェースがLinkUpする前に、postfixが起動してしまい、指定したIPアドレスの25/TCPポートを割当出来ない状態だ。
対応方法としては、systemdのユニットファイルを編集するのが一般的であろう。今回はpostfix.service を例として、"systemctl edit postfix.service"でユニットファイルを編集する場合について。
"systemctl edit postfix.service"で
[Unit]After=network-online.target
として保存すれば、今回の要件は完了する。
だがデフォルトでは、After=syslog.target network.targetとなっていて、syslog使ってないし、network-online.target があれば、(他のサービスで立ち上がるはずなので)"network.target" 不要じゃないか!と思った時、つまりは、デフォルトで記述されている場合を削除したい場合だ。
結論から言えば、著者は、"systemctl --full edit postfix.service"でしか対応しきれなかった。--full オプションは、すべての設定項目を記述する。保存先は、/etc/systemd/system/postfix.service となる。
[Service] セクションであれば、例えば、ExecStartPre=ExecStartPre=hogehogeと書けば、1行目のExecStartPre行でクリアされ、2行目の1行のみとなる。
同様の事を[Unit] セクションで行ったが、[Unit]After=After=network-online.targetとしても"network-online.target"が追記されるだけで、"syslog.target"も"network.target"も存在する。
だいぶん話が脱線してしまったが、これらの調査を行った際に利用したコマンドが、
〇 編集する場合
・ systemctl edit postfix.service
〇デフォルト設定部分を含んだユニットの設定内容を確認する場合
・ systemctl cat