當前位置:首頁 » 網頁前端 » shell腳本批量創建多用戶
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

shell腳本批量創建多用戶

發布時間: 2023-05-16 22:06:37

1. 關於shell腳本批量添加用戶的問題,大神們請進

i=0
while [ $i -le 10 ]
do
if [ $i -lt 5 ]
then
echo ftp0$i
echo /ftp/ftp0$i
else
echo ftp0$i
echo /好歲辯友缺雀尺ftp/ftp0$i
fi
let i=$i+1
done

2. linux中 用shell命令批量新建用戶的方法建立用戶 k1 k2 k3 k4 k5 登錄口令統一設置為12345 求詳細操作步驟

可以建立一個shell腳本處理,腳本內容如下,這只是個簡單的腳本,沒有對用戶設置襪緩組和家目錄,也沒有判斷用戶是否存在,實際應用中需要注搜衫意處理:
#!/bin/bash
#設置初始密碼
kpasswd="12345"
for kuser in k1 k2 k3 k4 k5
do
useradd $kuser
echo "$kuser:$kpasswd" | chpasswd
echo "用戶$kuser建立成功,初告漏模始密碼是$kpasswd"
done

3. 如何使用azure powershell批量創建用戶

之前給大家介紹很多關於Windows Azure的內容,基本上都是通過Windows Azure Management Portal來創建的。這種創建方式雖然直觀簡單,但是如果IT管理員需要同時創建1000台Azure服務的話,工作的代價是非常巨大的。
其賀答實我們可以通過Windows Azure PowerShell,通過命令行的方式來管理Windows Azure。這樣在進行諸如批量創建Azure Virtual Machine的操作會變得非常簡單。接下來就開始本章內容。
如果你是第一次運行Azure PowerShell ,請按照之前的文章,下載Azure PowerShell Settings文件並上傳至雲端。
了解Azure的幫助命名
1.我們首先運行命禪喊慧令: help azure ,來看看Windows Azure提供了哪些命令行。我只截取了部分內容,如下圖:

在上圖中我們可以看到,Azure PowerShell提供了非常多的命令。比如我們之前講解過的Add-AzureVhd等命令。
2.我們再運行命令: Get-AzureVMImage ,這條命令是列出所有的Azure Virtual Machine鏡像,其中包含Windows 和 Linux的。我只截取了部分內容,如下圖:

開始創建Azure虛擬機
1.指定當前的存儲
Set-AzureSubscription -SubscriptionName '<SubscriptionName>' -CurrentStorageAccount '<StorageAccount>'

比如我想指定訂閱為'Windows Azure MSDN - Visual Studio Ultimate',存儲賬戶為'leivms'。
執行以下命令:
Set-AzureSubscription -SubscriptionName 'Windows Azure MSDN - Visual Studio Ultimate' -CurrentStorageAccount 'leivms'

2.如果我想通過Azure PowerShell新建Virtual Machine
-VM Name為 LeiAzureVM
-VM Size為 ExtraSmall
-VM Image為 Windows Server 2012 Datacenter
-Windows用戶名為 leizhang,密碼為 Pass@word1
-DNS Name為 LeiAzure
-高可用組為 AvbSet
-數據中心選擇 East Asia
3. 先要設置鏡像為Windows Server 2012 Datacenter,
$imageList = Get-AzureVMImage `
| where {$_.ImageName -eq "__Windows-Server-2012-Datacenter-201407.01-en.us-127GB.vhd"}

$image=$imageList[0]

執行結果如下:

上圖的 $image 命令可以顯示我們需要的Windows Server 2012 DataCenter鏡像的相關信息
如果我想模糊查詢AzureImage的話,可以通過星號(*)通配符,來模糊查詢。
比如筆者只想查詢Windows Server 2012 Datacenter的鏡像,PowerShell如下:
$imageList = Get-AzureVMImage `
| where {$_.ImageName -like "*Windows-Server-2012-Datacenter*"}

$image=$imageList[0]

4.創建虛擬機
New-AzureVMConfig -Name 'LeiAzureVM' -InstanceSize 'ExtraSmall' -ImageName $image.ImageName -AvailabilitySetName 'AvbSet' ` | Add-AzureProvisioningConfig -Windows -AdminUsername 'leizhang' -Password 'Pass@word1' ` | New-AzureVM -ServiceName 'LeiAzure' -Location '滲碰East Asia'

執行結果如下圖:

5.查詢執行結果
我們在PowerShell中看到Create Succeeded,其實創建Azure VM的過程是非同步的。這時候我們查看Azure Management Portal,發現VM正在被創建。如下圖:

我們還可以通過Management Portal看到創建成功的虛擬機

OK,我們已經創建完第一台虛擬機了,如果需要 創建第2台虛擬機LeiAzureVM002加入到之前創建的DNS: LeiAzure.cloudapp.net ,
並且需要加入同一個高可用組'AvbSet',這句PowerShell語句按照下面執行:
New-AzureVMConfig -Name 'LeiAzureVM002' -InstanceSize 'ExtraSmall' -ImageName $image.ImageName -AvailabilitySetName 'AvbSet' ` | Add-AzureProvisioningConfig -Windows -AdminUsername 'leizhang' -Password 'Pass@word1' ` | New-AzureVM -ServiceName 'LeiAzure'

執行結果如下:

創建簡單的Linux虛擬機
如果我想創建一個簡單的Linux虛擬機,OS為CentOS。
-VM Name為 LeiLinuxVM001
-VM Size為 Medium
-VM Image為
CentOS 6.4

-Windows用戶名為 adminus er, 密碼為Abc@123456
-DNS Name為 LeiLinuxVM001
-高可用組為 AvbSet
-數據中心選擇 East Asia
1.獲得CentOS虛擬機鏡像,通過模糊查詢獲得CentOS鏡像
$imageList = Get-AzureVMImage `
| where {$_.ImageName -like "*CentOS*"}

$image=$imageList[0]

2.創建虛擬機命令:
New-AzureVMConfig -Name 'LeiLinuxVM001' -InstanceSize Medium -ImageName $image.ImageName -AvailabilitySetName 'AvbSet' | Add-AzureProvisioningConfig -Linux -LinuxUser 'adminuser' -Password 'Abc@123456' | New-AzureVM -ServiceName 'LeiLinuxVM001' -Location 'East Asia'

執行結果

觀察執行結果:

4. linux一次創建100個用戶怎麼創建用命令

1、Ubuntu中創建新用戶需要先獲取root管理員許可權,因此先使用sudo su命令獲取最高許可權。注意獲取root許可權需要輸入你自己的用戶密碼。

7、根據pass.log文件里記錄的這100個用戶的密碼逐個查看對應的隨機密碼是否有效。使用su命令切換到新用戶並輸入pass.log里記錄的對應的密碼,成功登錄,可見用戶創建成功。

5. 一次性Linux創建1000個用戶 user 初始密碼都為123456 shell腳本怎麼寫

你可以寫一個shell腳本

基本上,批量添加用戶有兩種方式:

一是用useradd + passwd命令配合腳本來添加;

二是用newusers+chpasswd來添加。

方法一、useradd + passwd命令配合腳本來添加

用戶的初始密碼被設為用戶名+123

#! /bin/bash
#
#batch add users with file called users.list
#
for username in $(more users.list)
do
if [-n $username]
then
  useradd -m $username
  echo
  echo $username"123" | passwd -- stdin $username
  echo
  echo "User $username's password is changer!"
else
  echo "The username is null!"
fi
done
~

其中users.list文件內容如下:

johnson
lily
kelly

6. 用shell腳本批量創建30個用戶,用戶名為exam1~exam30,用戶密碼統一為gdlclinux。

寫好了,還在測試,測試好了就給你。
寫好了,通過測試了。
########################################################################
#註:本腳本中使用了函數模塊,以方便修改和調試
#************************************************
# 2011年12月10日 初稿
#************************************************
# 2011年12月11日 測試 問題:密碼修改函數尚未實現
#************************************************
# 2011年12月11日 定稿 密碼修改函數實現
#************************************************
# by [email protected] 12.11.2011
########################################################################

#設置變數
i=1
username=exam
password=gdlclinux
rmso=$(tput rmso)
smso=$(tput smso)
#此處可添加要求輸入用戶名和密碼的項

#錯誤判斷函數
SEA()
{
location=$( which useradd ) #查找useradd的絕對路徑
if [ \( "$location" = "" \) -o \( -s "$location" \) ] #判斷是否找到useradd文件,或著找到的文件為空
then
echo "Useradd was not found,job terminated $smso unsuccessfully$rmso!"
exit
else
if [ -x "$location" ] #若useradd文件存在且不為空,判斷是否具有可執行許可權
then
echo "Command useradd doesn't have excution(x) mode"
exit
else #無法確定問題原因
echo "Script terminated by some unknown problem,Please check it!"
exit
fi
fi
}
#提示信息函數
casemsg()
{
#判斷passwd執行的返回值,並進入case分支
case "$y" in
0) echo "Set password for $smso $username$i$rmso successfully"
;;
1) echo "Permission denied when set password for $smso $username$i$rmso"
exit 1 ;;
2) echo "Invalid combination of options for command passwd"
exit 2 ;;
3) echo "Unexpected failure, nothing done"
exit 3 ;;
4) echo "Unexpected failure, passwd file missing"
exit 4 ;;
5) echo "Passwd file busy, try again"
exit 5 ;;
6) echo "Invalid argument to option"
exit 6 ;;
esac
}
#用戶創建函數
usercreate()
{
useradd -m $username$i #如果需要其他功能,請參照useradd幫助手冊修改此行,如:設置uid
x=$?
}
#密碼修改函數
#這里如果你的系統里有chpasswd這個批修改工具的話,就不用這么麻煩了。
MOVpassword()
{
( echo "$password";sleep 1;echo "$password" )|passwd $username$i #若useradd執行成功,則調用passwd設置密碼
y=$?
}
#主循環
while [ "$i" -ge 1 -a "$i" -le 30 ]
do
usercreate #調用usercreate函數創建用戶
if [ "$x" -eq 0 ] #判斷useradd是否執行成功
then
echo "User $smso $username$i$rmso have been create successfully!"

MOVpassword #調用MOVpassword修改密碼

casemsg #調用casemsg函數

if [ "$y" = 0 ] #如果MOVpassword的返回值為0,則將i加1
then
let i++
fi

else
SEA #調用錯誤判斷函數

fi
done
unset i x y location rmso smso username password #釋放所有設定的變數

7. linux腳本創建10個用戶,並制定組,求助

for((i=0;i<10;++i))
do
useradd-groot-s/sbin/nologinuser$i#創建用戶,用戶名user0~user9
su-user$i-c"touch~/test;chmodo-r,o-w,o-x~/test"#創建文件,並取消其他用戶許可權
done

8. shell腳本上

| 對於初學者而言,因為沒有實戰經驗,寫不出來 Shell 腳本 很正常,如果工作了幾年的運維老年還是寫不出來,那就是沒主動找需求,缺乏練習,缺乏經驗。針對以上問題,總結了30個生產環境中經典的 Shell 腳本 ,通過這些需求案例,希望能幫助大家提升Shell編寫思路,掌握編寫技巧。 |

先了解下編寫Shell過程中注意事項:

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">開頭加解釋器:#!/bin/bash
語法縮進,使用四個空格;多加註釋說明。
命名建議規則:變數名大寫、局部變數小寫,函數名小寫,名字體現出實際作用。
默認變數是全局的,在函數中變數local指定為局部變數,避免污染其他作用域。
有兩個 命令 能幫助我調試腳本:set -e 遇到執行非0時退出腳本,set-x 列印執行過程。
寫腳本一定先測試再到生產上。
</pre>

1、獲取隨機字元串或數字

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">獲取隨機8位字元串:
方法1:

471b94f2
方法2:

vg3BEg==
方法3:

ed9e032c

獲取隨機8位數字:
方法1:

23648321
方法2:

38571131
方法3:

69024815

cksum:列印CRC效驗和統計位元組
</pre>

2、定義一個顏色輸出字元串函數

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">方法1:
function echo_color() {
if [ 233[0m"
elif [ 233[0m"
fi
}
方法2:
function echo_color() {
case 2[0m"
;;
red)
echo -e "[31;40m$2[0m"
;;
*)
echo "Example: echo_color red string"
esac
}

使用方法:echo_color green "test"

function關鍵字定義一個函數,可加或不加。
</pre>

3、批量創建用戶

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">#!/bin/bash
DATE= 1 == "green" ]; then
echo -e "[32;40m 1 == "red" ]; then
echo -e "[31;40m$2[0m"
fi
}

if [ -s USER_FILE {DATE}.bak
echo_color green " {USER_FILE}- USER_FILE
echo "----------------" >> USER &>/dev/null; then
PASS= RANDOM |md5sum |cut -c 1-8)
useradd PASS |passwd --stdin USER USER_FILE
echo " USER User already exists!"
fi
done
</pre>

4、檢查軟體包是否安裝

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">#!/bin/bash
if rpm -q sysstat &>/dev/null; then
echo "sysstat is already installed."
else
echo "sysstat is not installed!"
fi
</pre>

5、檢查服務狀態

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">#!/bin/bash
PORT_C= (ps -ef |grep ntpd |grep -vc grep)
if [ PS_C -eq 0 ]; then
echo "內容" | mail -s "主題" [email protected]
fi
</pre>

6、檢查主機存活狀態

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">方法1:將錯誤IP放到數組裡面判斷是否ping失敗三次

IP_LIST="192.168.18.1 192.168.1.1 192.168.18.2"
for IP in NUM -le 3 ]; do
if ping -c 1 IP Ping is successful."
break
else
# echo " NUM"
FAIL_COUNT[ IP
let NUM++
fi
done
if [ {FAIL_COUNT[1]} Ping is failure!"
unset FAIL_COUNT[*]
fi
done

方法2:將錯誤次數放到FAIL_COUNT變數裡面判斷是否ping失敗三次

IP_LIST="192.168.18.1 192.168.1.1 192.168.18.2"
for IP in IP >/dev/null; then
echo " IP Ping is failure FAIL_COUNT -eq 3 ]; then
echo "$IP Ping is failure!"
fi
done

方法3:利用for循環將ping通就跳出循環繼續,如果不跳出就會走到列印ping失敗

ping_success_status() {
if ping -c 1 IP Ping is successful."
continue
fi
}
IP_LIST="192.168.18.1 192.168.1.1 192.168.18.2"
for IP in IP Ping is failure!"
done
</pre>

7、監控CPU、內存和硬碟利用率

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">1)CPU
藉助vmstat工具來分析CPU統計信息。

DATE= (ifconfig eth0 |awk -F [ :]+ /inet addr/{print (vmstat |awk NR==3{print (vmstat |awk NR==3{print (vmstat |awk NR==3{print (vmstat |awk NR==3{print (( SY))
if [ DATE
Host: USE
" | mail -s "CPU Monitor" $MAIL
fi

2)內存

DATE= (ifconfig eth0 |awk -F [ :]+ /inet addr/{print (free -m |awk /Mem/{print (free -m |awk /Mem/{print 6- (( USE))

if [ DATE
Host: TOTAL,Use= FREE
" | mail -s "Memory Monitor" $MAIL
fi

3)硬碟

DATE= (ifconfig eth0 |awk -F [ :]+ /inet addr/{print (fdisk -l |awk -F [: ]+ BEGIN{OFS="="}/^Disk /dev/{printf "%s=%sG,", 3} )
PART_USE= 1,int( 6} )
for i in (echo (echo (echo USE -gt 80 ]; then
echo "
Date: IP
Total: PART= MOUNT)
" | mail -s "Disk Monitor" $MAIL
fi
done
</pre>

8、批量主機磁碟利用率監控

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">前提監控端和被監控端SSH免交互登錄或者密鑰登錄。

寫一個配置文件保存被監控主機SSH連接信息,文件內容格式:IP User Port

HOST_INFO=host.info
for IP in 1} (awk -v ip= 1{print HOST_INFO)
PORT= IP ip== 3} PORT IP df -h > (awk BEGIN{OFS="="}/^/dev/{print 5)} USE_RATE_LIST; do
PART_NAME= {USE_RATE#*=}
if [ PART_NAME Partition usage $USE_RATE%!"
fi
done
done
</pre>

9、檢查網站可用性

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">1)檢查URL可用性
方法1:
check_url() {
HTTP_CODE= 1)
if [ 1 Access failure!"
fi
}
方法2:
check_url() {
if ! wget -T 10 --tries=1 --spider $1 >/dev/null 2>&1; then

}

使用方法:check_url www..com

2)判斷三次URL可用性
思路與上面檢查主機存活狀態一樣。

方法1:利用循環技巧,如果成功就跳出當前循環,否則執行到最後一行

check_url() {
HTTP_CODE= 1)
if [ URL_LIST; do
check_url URL
check_url URL Access failure!"
done

方法2:錯誤次數保存到變數

URL_LIST=" www..com www.agasgf.com "
for URL in (curl -o /dev/null --connect-timeout 3 -s -w "%{http_code}" HTTP_CODE -ne 200 ]; then
let FAIL_COUNT++
else
break
fi
done
if [ URL Access failure!"
fi
done

方法3:錯誤次數保存到數組

URL_LIST=" www..com www.agasgf.com "
for URL in NUM -le 3 ]; do
HTTP_CODE= URL)
if [ NUM]= NUM下標, {#FAIL_COUNT[ ]} -eq 3 ]; then
echo "Warning: $URL Access failure!"
unset FAIL_COUNT[ ] #清空數組
fi
done
</pre>

10、檢查MySQL主從同步狀態

<pre style="margin: 0px; padding: 0px; overflow: auto; white-space: pre-wrap; color: rgb(51, 51, 51); font-size: 14px; font-style: normal; font-variant-ligatures: normal; font-variant-caps: normal; font-weight: 400; letter-spacing: normal; orphans: 2; text-align: start; text-indent: 0px; text-transform: none; widows: 2; word-spacing: 0px; -webkit-text-stroke-width: 0px; background-color: rgb(255, 255, 255); text-decoration-thickness: initial; text-decoration-style: initial; text-decoration-color: initial;">#!/bin/bash
USER=bak
PASSWD=123456
IO_SQL_STATUS= USER -p 0} ) #gsub去除冒號後面的空格
for i in {i%:*}
THREAD_STATUS= THREAD_STATUS" != "Yes" ]; then
echo "Error: MySQL Master-Slave THREAD_STATUS!"
fi
done
</pre>

動手練一練,讓你的Shell功底上升一個段位!