(構築1)個人ユーザプロファイル作成

# <u>■概略</u>
オープンソースエンジニア歴30年超の筆者が2023年からIBMiを学びだした学習記録です
IFSで使うIBMiアカウント(ユーザプロファイル)を作成するには複数の作業をまとめて実行する必要があります。IFSのbashでsystemコマンドを実行してユーザプロファイルを作成するスクリプトを作成しました

## <u>◯ 条件</u>
※ユーザプロファイルは個人毎に別にする
※ライブラリ、OUTQ、JOBD、IFSホームディレクトリは個人ごとに作成する
※最初のユーザプロファイルは5250でログインしSECADMかSECOFR権限を付与し作成する *1
※以後のユーザプロファイルは*1のユーザプロファイルでsshログインし、
　bashスクリプトを実行して作成する

## <u>■スクリプト解説</u>
## <u>◯実行手順</u>
SECADMかSECOFR権限を持つユーザプロファイルでsshしスクリプトを実行する手順
IFSのホームディレクトリに~/USRPRFディレクトリがある前提
```
$ cd ~/USRPRF
$ cp CRTUSRPRF_Template.bash CRTUSRPRF_{名前}.bash
$ vim CRTUSRPRF_{名前}.bash ※変更内容は後述
$ ./CRTUSRPRF_{名前}.bash
$ vim DSPUSRPRF.bash
$ ./DSPUSRPRF.bash > USRPRFS.txt ※全アカウントの内容をテキストに残しておく  
```
## <u>◯CRTUSRPRFスクリプト内容</u>
**＊USERにユーザプロファイル名を6文字以内で定義する**  
　${USER}LIB、${USER}OUTQ、${USER}JOBD を作成する  
　最大オブジェクト長は10文字なので、ユーザプロファイルは10-4=6文字まで  
```
USER=TAKAMI ※例
```

**＊KJUSERに社名+漢字名を定義する**  
```
KJUSER=えむぼま高見禎成 ※例
```

**＊パスワード**  
　デフォルトのユーザプロファイルと同じパスワードはセキュリティが低すぎる    
　しかし5250でログインする際は鍵が使えずパスワードを入力するので長いと不便  
　そのため5文字の数字・アルファベット大文字混じりのランダム文字列にする 
　この辺は各会社の要件に従ってください
　アルファベット小文字は使えない!  
```
PW=ABC1D ※例
```

**＊各ユーザプロファイル用のライブラリをCRTLIBで作成する**  
```
system "CRTLIB    LIB(${USER}LIB)  TEXT('${KJUSER}LIB')"
```

**＊各ユーザプロファイル用の出力キューを個人ライブラリ内に作成する**  
```
system "CRTOUTQ   OUTQ(${USER}LIB/${USER}OUTQ) TEXT('${KJUSER}OUTQ')"
```

**＊各ユーザプロファイル用のジョブ記述を個人ライブラリ内に作成する**  
ジョブ記述は標準ライブラリリスト、出力キューを定義している  
```
system "CRTJOBD   JOBD(${USER}LIB/${USER}JOBD) TEXT('${KJUSER}JOBD') \
    INLLIBL(${USER}LIB QGPL QTEMP) OUTQ(${USER}LIB/${USER}OUTQ)"
```

**＊各ユーザプロファイルを作成する**  
```
system "CRTUSRPRF USRPRF(${USER}) PASSWORD(${PW}) CURLIB(${USER}LIB) HOMEDIR('/HOME/${USER}') \
    INLPGM(*LIBL/QCMD) JOBD(${USER}LIB/${USER}JOBD) CCSID(5035) USRCLS(*PGMR) TEXT('${KJUSER}')"
```

**＊IFSにホームディレクトリを作成する**  
・.bashrcはUbuntuも.bashrcを元にパスやtig用環境変数などを設定している  
・.profileはbashを自動起動する  
・vimやtmuxを使う人なら.tmux.confや.vim、.vimrcを/home/{テンプレートユーザ}から
　コピーすると良い  
・.sshは[「(開発3)VSCode..のインストール](https://qiita.com/takami_embomajp/items/3e60be7b031635d85057)に記載している  
・vimやtmuxを使う人なら.tmux.confや.vim、.vimrcを/home/takamiからコピーすると良い  
```
mkdir /home/${USER}
cp /home/{テンプレートユーザ}/.bashrc    /home/${USER}
cp /home/{テンプレートユーザ}/.profile   /home/${USER}
# cp -r /home/{テンプレートユーザ}/.ssh    /home/${USER} #.sshは各ユーザが設定
cp /home/{テンプレートユーザ}/.commit_template /home/${USER}
cp /home/{テンプレートユーザ}/.gitconfig /home/${USER} # 実行後emailとuserをgitlabのアカウントに修正
cp /home/{テンプレートユーザ}/.vimrc     /home/${USER} # 実行後.vimrcのtakamiを${USER}に修正
cp -r /home/{テンプレートユーザ}/.vim    /home/${USER}
cp /home/{テンプレートユーザ}/.tmux.conf /home/${USER}
chown -R ${USER} /home/${USER}
```

## <u>◯DSPUSRPRFスクリプト内容</u>
```
#!/bin/bash
system "DSPUSRPRF USRPRF({ユーザ名1})"
system "DSPUSRPRF USRPRF({ユーザ名2})"
```
## <u>■スクリプト全体</u>
CRTUSRPRF_{ユーザ名}.bash
```
#!/bin/bash
### 高見 禎成(takami)の作成例
USER=TAKAMI
KJUSER=えむぼま高見禎成
# IBMi
system "CRTLIB    LIB(${USER}LIB)  TEXT('${KJUSER}LIB')"
system "CRTOUTQ   OUTQ(${USER}LIB/${USER}OUTQ) TEXT('${KJUSER}OUTQ')"
system "CRTJOBD   JOBD(${USER}LIB/${USER}JOBD) TEXT('${KJUSER}JOBD') \
    INLLIBL(${USER}LIB QGPL QTEMP) OUTQ(${USER}LIB/${USER}OUTQ)"
system "CRTUSRPRF USRPRF(${USER}) PASSWORD(${PW}) CURLIB(${USER}LIB) \
    HOMEDIR('/home/${USER}') INLPGM(*LIBL/QCMD) JOBD(${USER}LIB/${USER}JOBD) \
    CCSID(5035) USRCLS(*SECADM) TEXT('${KJUSER}')"
# IFS
mkdir /home/${USER}
cp /home/{テンプレートユーザ}/.bashrc    /home/${USER}
cp /home/{テンプレートユーザ}/.profile   /home/${USER}
#cp -r /home/{テンプレートユーザ}/.ssh    /home/${USER} # sshは各人が設定
cp /home/{テンプレートユーザ}/.commit_template /home/${USER}
cp /home/{テンプレートユーザ}/.gitconfig /home/${USER}
cp /home/{テンプレートユーザ}/.vimrc     /home/${USER}
cp -r /home/{テンプレートユーザ}/.vim    /home/${USER}
cp /home/{テンプレートユーザ}/.tmux.conf /home/${USER}
chown -R ${USER} /home/${USER}
```