質問編集履歴

2

質問内容の変更、試作シェルの提示

2018/07/11 06:52

投稿

babylone
babylone

score11

test CHANGED
File without changes
test CHANGED
@@ -5,3 +5,145 @@
5
5
 
6
6
 
7
7
  OSはcentos7です。
8
+
9
+
10
+
11
+ ======================================================================================================
12
+
13
+ 現在自分でシェルスクリプトを組んでみたのですが2点で躓いています。宜しければアドバイスお願いします。
14
+
15
+ 1 ファイル内を1行づつ読み込むシェルを作成したつもりが一度に読み込まれている為、単体のノードの設定の場合は問題なく処理できているが
16
+
17
+ 複数ノードを一気に設定しようとした所失敗してしまう
18
+
19
+ 2 既定のパスワードで記号(>や\など)が入ってしまっているノードに対しては単体の設定でもキチンとパスワードが入力されずssh接続が出来ない
20
+
21
+
22
+
23
+
24
+
25
+ =======================================================================================================
26
+
27
+
28
+
29
+
30
+
31
+ #!/bin/bash
32
+
33
+
34
+
35
+
36
+
37
+
38
+
39
+ # アカウント作成対象サーバでの設定ファイルの配置パス
40
+
41
+ FILE_U='/tmp/addusers.txt'
42
+
43
+ # アカウント作成対象サーバのパスワードファイルのパス
44
+
45
+ FILE_P='/etc/passwd'
46
+
47
+ # アカウント作成対象サーバのrootユーザのパスワードを記載するファイルパス
48
+
49
+ TEXT='/usr/local/tools/adduser/pass.txt'
50
+
51
+
52
+
53
+ # データを読み込ませるための変数
54
+
55
+ LIST=`cat $TEXT`
56
+
57
+
58
+
59
+ while read line
60
+
61
+
62
+
63
+ do
64
+
65
+
66
+
67
+ # アカウント作成対象サーバのIPを取り出す変数
68
+
69
+ IP=`cat $TEXT | awk '{print $1}'`
70
+
71
+
72
+
73
+ echo 'IP='"${IP}" >> /usr/local/tools/adduser/log.txt
74
+
75
+ # アカウント作成対象サーバのパスワードを取り出す変数
76
+
77
+ PASSWORD=`cat $TEXT | awk '{print $2}'`
78
+
79
+ echo 'PASSWORD='"${PASSWORD}" >> /usr/local/tools/adduser/log.txt
80
+
81
+ #記号入りのパスワードを文字列として認識させるための変数
82
+
83
+ PASS=`printf %q "$PASSWORD"`
84
+
85
+ echo 'PASS='"${PASS}" >> /usr/local/tools/adduser/log.txt
86
+
87
+
88
+
89
+ # アカウント作成対象サーバへ設定ファイルを移送する
90
+
91
+ sshpass -p "$PASS" scp -o "StrictHostKeyChecking=no" /usr/local/tools/adduser/addusers.txt root@$IP:/tmp
92
+
93
+ # アカウント作成対象サーバで設定ファイルに記載のあるユーザー作成を実施する
94
+
95
+ sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP newusers $FILE_U
96
+
97
+
98
+
99
+
100
+
101
+ # 作成されたhomeディレクトリ配下のディレクトリにデフォルトの構成内容を配置する
102
+
103
+ for line in `sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP cat $FILE_U`
104
+
105
+ do
106
+
107
+ user_name=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo $line | cut -d ':' -f 1`
108
+
109
+ txt=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP cat $FILE_P | grep -e "^$user_name"`
110
+
111
+ user_id=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo $txt | cut -d ':' -f 3`
112
+
113
+ group_id=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo $txt | cut -d ':' -f 4`
114
+
115
+ home_dir=`sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo $txt | cut -d ':' -f 6`
116
+
117
+ sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP echo "USER_ID:${user_id} GROUP:${group_id} HOME_DIR:$home_dir"
118
+
119
+ sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP cp -rf /etc/skel/. $home_dir/
120
+
121
+ sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP chown -R $user_id $home_dir
122
+
123
+ sshpass -p "$PASS" ssh -o "StrictHostKeyChecking=no" root@$IP chgrp -R $group_id $home_dir
124
+
125
+ done
126
+
127
+
128
+
129
+
130
+
131
+ done << FILE
132
+
133
+ $LIST
134
+
135
+ FILE
136
+
137
+
138
+
139
+
140
+
141
+ ※addusers.txtの中身
142
+
143
+ test1:x::::/home/test1:/bin/bash
144
+
145
+
146
+
147
+ ※pass.txtの中身
148
+
149
+ ノードIP パスワード

1

タイトルと質問文修正

2018/07/11 06:52

投稿

babylone
babylone

score11

test CHANGED
@@ -1 +1 @@
1
- 複数サーバに一括で新しいユーザー作成とパスワード設定を行いたい
1
+ CentOSの複数サーバに一括で新しいユーザー作成とパスワード設定を行いたい
test CHANGED
@@ -1,4 +1,4 @@
1
- 所持している複数サーバに一括して新たなユーザーアカウントの作成とパスワードの設定をBシェル作成したいです。
1
+ 所持している複数サーバに一括して新たなユーザーアカウントの作成とパスワードの設定を行うBシェル作成したいです。
2
2
 
3
3
  アドバイスお願いいたします。
4
4