※※ 私用メモ
RtnLine="${RtnLines[0]}"
RtnItems=(`echo "${RtnLine}" | tr ',' ' '`)
FTP_HOST="${RtnItems[0]}"
FTP_USER="${RtnItems[1]}"
FTP_DIR="${RtnItems[2]}"
FTP_USER_PASS="${RtnItems[3]}"
expect -c "
set timeout 10
spawn ssh ${FTP_USER}@${FTP_HOST}
expect {
default { exit 2}
\"assword:\" { send \"${FTP_USER_PASS}\n\" }
}
expect \":~\"
send \" コマンド命令文 \n\" ...N
interact
"
if [ $? -eq 2 ]; then
Abort 2 "接続タイムアウトを検知しました。"
fi
SSHコネクション作成自動化
expect -c "
set timeout 10
spawn ssh ${FTP_USER}@${FTP_HOST}
expect \"Are you sure you want to continue connecting (yes/no)?\" {
send \"yes\n\"
expect -re \".* password\:\"
send \"${FTP_USER_PASS}\r\n\"
} \".* password\:\" {
send \"${FTP_USER_PASS}\r\n\"
}
expect \":~\"
send \"mv $FTP_DIR/boshi02/in/JZCD921X*.csv $FTP_DIR/boshi02/in_z/ \n\"
send \"mv $FTP_DIR/chuki02/in/JZCD921X*.csv $FTP_DIR/chuki02/in_z/ \n\"
send \"mv $FTP_DIR/houchi02/in/JZCD921X*.csv $FTP_DIR/houchi02/in_z/ \n\"
send \"mv $FTP_DIR/jisou02/in/JZCD921X*.csv $FTP_DIR/jisou02/in_z/ \n\"
send \"mv $FTP_DIR/kenjyutaku02/in/JZCD921X*.csv $FTP_DIR/kenjyutaku02/in_z/ \n\"
send \"mv $FTP_DIR/nourin02/in/JZCD921X*.csv $FTP_DIR/nourin02/in_z/ \n\"
send \"mv $FTP_DIR/shinsho02/in/JZCD921X*.csv $FTP_DIR/ifdata/shinsho02/in_z/ \n\"
send \"mv $FTP_DIR/shogaku02/in/JZCD921X*.csv $FTP_DIR//shogaku02/in_z/ \n\"
send \"\exit\n\"
interact
"
#OpenLDAPのバージョンを確認
rpm -qa | grep openldap
#LDAP組織情報に登録されているユーザの一覧を取得するコマンド
ldapsearch -x -h localhost -b 'dc=test,dc=soshikimei,dc=jp'(uid=*)' uid
#エントリーを変更する場合
ldapmodify -D "cn=Manager,dc=test,dc=soshikimei,dc=jp" -w ldapmng -f /root/ldif/base_user_modfi.ldif
#エントリーを新たに追加する場合
ldapadd -x -D "cn=Manager,dc=test,dc=soshikimei,dc=jp" -w ldapmng -f /root/ldif/base_user.ldif
#エントリー情報例
Host:XX.XX.XX.XX
Domain:dc=test,dc=soshikimei,dc=jp
Entry:uid=1112252,ou=000000組織1,ou=000組織の課室,dc=test,dc=soshikimei,dc=jp
ldifの内容①
LDAPユーザの登録
dn: uid=7710160,ou=000000組織1,ou=000組織の課室,dc=test,dc=soshikimei,dc=jp
objectClass: top
objectClass: posixAccount
objectClass: account
gecos: ldapsystem manager
uid: 7710160
uidNumber: 7710160
cn: 7710160
gidNumber: 50001
homeDirectory: /home/7710160
loginShell: /bin/bash
userPassword: pw7710160
dn: uid=7110570,ou=000000組織1,ou=000組織の課室,dc=test,dc=soshikimei,dc=jp
objectClass: top
objectClass: posixAccount
objectClass: account
gecos: ldapsystem manager
uid: 7110570
uidNumber: 7110570
cn: 7110570
gidNumber: 50001
homeDirectory: /home/7110570
loginShell: /bin/bash
userPassword: pw7110570
ldifの内容(変更)②
LDAPユーザの更新
dn: uid=7710160,ou=000000組織1,ou=000組織の課室,dc=test,dc=soshikimei,dc=jp
changetype: modify
replace: gidNumber
gidNumber: 10501
dn: uid=7110570,ou=000000組織1,ou=000組織の課室,dc=test,dc=soshikimei,dc=jp
changetype: modify
replace: gidNumber
gidNumber: 10501
RSA暗号鍵作成
トムキャット(SANs)
keytool -genkeypair -alias client -keystore ~/jz_client/security/.keystore -validity 36500 -keyalg RSA -sigalg SHA256withRSA -keysize 2048 -storepass client_password -keypass client_password -ext SAN=DNS:test.example.com,IP:XX_XX_XX_XX
アパッチ(SANs)
openssl x509 -req -days 36500 -in server.csr -signkey server.key -out server.crt -extfile san.txt
openssl x509 -text -in server.crt -noout
セキュリティホール確認用
#空いているポートを確認する
lsof -i -P
#CentOS ファイアウォールの確認
systemctl status firewalld.service
#ファイアウォールで許可されているポートの確認
firewall-cmd --list-ports
#ファイルウォールが設定されているゾーンを確認
firewall-cmd --list-all
ICMP疎通確認
ping -4 XX.XX.XX.XX
traceroute -4 XX.XX.XX.XX
######################################################################
変数定義
######################################################################
FTPサーバ接続先情報
IPアドレス
declare FTP_HOST=
ユーザID
declare FTP_USER=
ユーザPASS
declare FTP_USER_PASS=
##-------------------------------------------------------------------------------
Xmoveftp() 個別連携ファイル移動関数
##-------------------------------------------------------------------------------
function Xmoveftp() {
local RtnLines=
local RtnItems=
local xFilePathFrom=
local XPathFrom=
local sqltxt=
sqltxt="SELECT
M00.shutokuki AS FTPSVNAME
, M00.shutokumei1 AS FTPHOST
, M00.shutokumei2 AS FTPUSER
, M00.shutokumei3 AS FTPPASS
, M01.shutokumei2 AS FromPath
, replace(M02.shutokumei1,'in_z','in') AS FILEFromPath
FROM
(SELECT * FROM JZZ010M WHERE kbn = 'Z040') M00
INNER JOIN (SELECT * FROM JZZ010M WHERE kbn = 'Z041') M01
ON ( M00.shutokuki=M01.shutokumei1 )
INNER JOIN (SELECT * FROM JZZ010M WHERE kbn = 'Z019') M02
ON ( M01.shutokumei1=M02.shutokumei3
AND left(M01.shutokumei2,strpos(M01.shutokumei2,'in_z')) = left(M02.shutokumei1,strpos(M02.shutokumei1,'in_z')) )
WHERE
M00.shutokuki='FTPSV01'
AND M01.shutokumei2 LIKE '%in_z%'
AND M02.shutokumei1 LIKE '%in_z%'
;"
## 配列で取得
RtnLines=(`$HOME/bin/JZSQL.sh -c "${sqltxt}" -t | tr '\n' ' '`)
## 文字列が0文字であれば -z zero -n zero以上
if [ -z "${RtnLines}" ]; then
RTN_CD=50
echo "GetFtpFileList: FTPサーバファイルリスト取得エラー"
Abort $RTN_CD " FTPサーバファイルリストが用語管理テーブルに設定されていません。"
fi
for RtnLine in ${RtnLines[@]};
do
RtnItems=(`echo "${RtnLine}" | tr ',' ' '`)
## FTPサーバのIPアドレスを取得
FTP_HOST=`eval echo "${RtnItems[1]}"`
## FTPサーバのユーザ情報を取得
FTP_USER=`eval echo "${RtnItems[2]}"`
## FTPサーバのパスワード情報を取得
FTP_USER_PASS=`eval echo "${RtnItems[3]}"`
## "/"が含まれるため"@"をデリミタとする。
if [ -z "${JZ_FTP_DIR}" ]; then
xPathFrom=`eval echo "${RtnItems[4]}"`
xFilePathFrom=`eval echo "${RtnItems[5]}"`
else
xPathFrom=`eval echo "${RtnItems[4]}" | sed -e "s@${HOME}/${HOSTNAME}@${JZ_FTP_DIR}@g"`
xFilePathFrom=`eval echo "${RtnItems[5]}" | sed -e "s@${HOME}/${HOSTNAME}@${JZ_FTP_DIR}@g"`
fi
## 受信元ファイルパスに"%","_"が含まれている場合の処理(ファイル名不定)
if [ `echo "${RtnItems[5]}" | grep [%_]` ]; then
## "$HOME"置換, "%" -> "*" に置換
xFilePathFrom=`eval echo "${xFilePathFrom}" | sed -e "s/%/*/g"`
fi
echo ${xFilePathFrom}
echo ${xPathFrom}
XsvnclientFTP ${FTP_HOST} ${FTP_USER} ${FTP_USER_PASS} ${xPathFrom} ${xFilePathFrom}
done
}
##-------------------------------------------------------------------------------
XsvnclientFTP() ファイルチェック関数
FTPサーバにSVN接続して対象のファイルを所定の場所に移動させる。
引数1 接続先IPアドレス
引数2 ユーザID
引数3 ユーザPASS
引数4 移動先フォルダーパス
引数5 移動元フォルダーパス
##-------------------------------------------------------------------------------
function XsvnclientFTP() {
echo "date "+%Y/%m/%d %H:%M:%S"
: ***** 外部ファイルID<$5>のファイル受信開始 *****"
Do "電子収納個別調定データ移動" 128 \
# 対話方式
expect -c "
set timeout 10
spawn ssh ${FTP_USER}@${FTP_HOST}
expect \"Are you sure you want to continue connecting (yes/no)?\" {
send \"yes\n\"
expect -re \".* password\:\"
send \"${FTP_USER_PASS}\r\n\"
} \".* password\:\" {
send \"${FTP_USER_PASS}\r\n\"
}
expect \":~\"
send \"mv $xFilePathFrom $xPathFrom \n\"
send \"\exit\n\"
interact
"
}
Do "電子収納個別調定データ移動" 128 \
# 対話方式
Xmoveftp