当前位置:首页 » 网页前端 » 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功底上升一个段位!