vCSA 6.0 のシェルのタイムアウト値について

vCSA シェルのタイムアウト値はバージョンによって異なります。

vCSA 6.0 の場合には、シェルタイムアウト値がデフォルトで 3600秒 (1H) になっていたり、vCSA 6.0 u1 の場合には 900秒 (15分) になっていたりします。

vCSA 6.0 では、タイムアウト値として設定できる 最大値は、231 - 1 = 2,147,483,647秒 で、計算して見ると 約 68年 になります。

・ 2,147,483,647 秒 / 86,400(1日の秒数) = 24,855.13480324074 日

・ 24,855.13480324074 日 / 365 日 = 68.09625973490614 年

シェル切替えを有効にするコマンド shell.set --enabled True の有効期限がデフォルトで 1時間になっているので、1時間が経つと enableddisabled に変わり、有効期限が切れた状態になってしまうので、Command> shell を実行しても切替わらなくなります。

vCSA のシェルタイムアウト値を無期限に設定する前に、簡単に、以下のテストを実施してから設定するようにします。

  • timeout 値として 10 秒を設定
  • 10 秒後、shell を実行し、はじかれることを確認
  • 再度、timeout 値として 10 秒を設定
  • 10 秒以内に、shell を実行し、切替わることを確認
  • timeout 値を設定してから 10 秒が経過した時点で exit でシェルから抜け、Command> プロンプトに戻る
  • shell を実行し、はじかれることを確認 (有効期限切れ)
  • timeout 値を無期限に設定

Step 1. vCSA 6.0 シェル timeout 期限切れテスト

vCSA 6.0 シェル timeout 期限切れテスト
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
#### timeout 値として 10 を設定
Command> shell.set --enabled True --timeout 10
 
#### 10 秒後、shell を実行し、はじかれることを確認
Command> shell
Shell is disabled.
 
#### 再度、timeout 値として 10 を設定
Command> shell.set --enabled True --timeout 10
 
#### 10 秒以内に、shell を実行し、切替わることを確認
Command> shell
#
 
#### 10 秒が経過した時点で exit でシェルから抜け、Command> プロンプトに戻る
# exit
logout
Command>
 
#### shell を実行し、はじかれることを確認 (有効期限切れ)
Command> shell
Shell is disabled.

Step 2. vCSA 6.0 シェル timeout 値を無期限に設定

shell.set --enabled True --timeout <SEC>
1
Command> shell.set --enabled True --timeout 2147483647

これで、68年間は、シェル切替え設定をしなくても良くなりました。

vCSA 6.0 u1 から timeout の上限が変わった?

後で気が付いたのですが、vCSA 6.0 u1 からシェルタイムアウト値の上限が変わったみたいです。

最近、vCSA 6.0 から vCSA 6.0 u1 へアップグレードしたのですが、たまたま vCSA の OS にログインする必要があって、上記のコマンドを実行してみたら以下のエラーで起こられました。

確認して見たら設定できる MAX 値が 86400秒 (1日) に変わってました。

shell.set --enabled True --timeout <SEC>
1
2
3
Command> shell.set --enabled True --timeout 2147483647
Error in method: The maximum timeout is 86400 seconds(1 day). (code 2005)
Attributes: {}

tmout.sh を修正し、直接タイムアウト値を設定

OS のログインユーザにタイムアウト値を適用する tmout.sh を修正し、直接タイムアウト値を設定します。

まずは、tmout.sh の中身を確認し、どうなっているか確認します。

TMOUT=900 になっているので、シェルタイムアウトのデフォルト値として 900秒 (15分) が設定されていることが分かります。

tmout.sh 修正前の確認
01
02
03
04
05
06
07
08
09
10
Command> shell
 
# cat /etc/profile.d/tmout.sh
TMOUT=900
readonly TMOUT
export TMOUT
mesg n 2>/dev/null
 
# echo $TMOUT
900

後は、TMOUT=900 の値を増やします。

この例では、シェルタイムアウト値を 900秒 (15分) → 900000秒 (250時間) に変更します。

設定を確認するためには、完全にログアウトし、再度ログインする必要があるので、設定が終わったら一回ログインし直して、設定が反映されていることを確認します。

/etc/profile.d/tmout.sh
1
2
3
4
5
#TMOUT=900        #### コメントアウト
TMOUT=900000      #### 追加
readonly TMOUT
export TMOUT
mesg n 2>/dev/null
設定確認
01
02
03
04
05
06
07
08
09
10
# exit
 
Command> exit
 
#### 再度ログインしてから以下を実行
 
Command> shell
 
# echo $TMOUT
900000

以上、vCenter Server Appliance 6.0 シェルのタイムアウト値変更 でした。