当前位置:首页 » 编程软件 » shell脚本创建群组

shell脚本创建群组

发布时间: 2022-09-08 20:08:49

‘壹’ 请用shell脚本创建一个组class、一组用户,用户名为stdX X从01-30,并归属class组

脚本如下
[root@zintao01 ~]# cat adser.sh
#!/bin/bash
#script for adser.
#create by haojiu
#2015-x-x
groupadd class
user=std
for i in {01..30}
do
useradd -G class ${user}$i
done
如果有什么不懂的话可以去看看《linux就该这么学》这本书,非常适合新手学习Linux。

‘贰’ 创建一个script,Linux shell脚本

和C语言类似,在Shell中用if、then、elif、else、fi这几条命令实现分支控制。这种流程控制语句本质上也是由若干条Shell命令组成的,例如先前讲过的
if [ -f ~/.bashrc ]; then
~/.bashrc
fi
其实是三条命令,if [ -f ~/.bashrc
]是第一条,then .
~/.bashrc是第二条,fi是第三条。如果两条命令写在同一行则需要用;号隔开,一行只写一条命令就不需要写;号了,另外,then后面有换行,但这条命令没写完,Shell会自动续行,把下一行接在then后面当作一条命令处理。和[命令一样,要注意命令和各参数之间必须用空格隔开。if命令的参数组成一条子命令,如果该子命令的Exit Status为0(表示真),则执行then后面的子命令,如果Exit Status非0(表示假),则执行elif、else或者fi后面的子命令。if后面的子命令通常是测试命令,但也可以是其它命令。Shell脚本没有{}括号,所以用fi表示if语句块的结束。见下例:
#! /bin/sh
if [ -f /bin/bash ]
then echo "/bin/bash is a file"
else echo "/bin/bash is NOT a file"
fi
if :; then echo "always true"; fi
:是一个特殊的命令,称为空命令,该命令不做任何事,但Exit Status总是真。此外,也可以执行/bin/true或/bin/false得到真或假的Exit Status。再看一个例子:
#! /bin/sh
echo "Is it morning? Please answer yes or no."
read YES_OR_NO
if [ "$YES_OR_NO" = "yes" ]; then
echo "Good morning!"
elif [ "$YES_OR_NO" = "no" ]; then
echo "Good afternoon!"
else
echo "Sorry, $YES_OR_NO not recognized. Enter yes or no."
exit 1
fi
exit 0
上例中的read命令的作用是等待用户输入一行字符串,将该字符串存到一个Shell变量中。
此外,Shell还提供了&&和||语法,和C语言类似,具有Short-circuit特性,很多Shell脚本喜欢写成这样:
test "$(whoami)" != 'root' && (echo you are using a non-privileged account; exit 1)

&&相当于“if...then...”,而||相当于“if not...then...”。&&和||用于连接两个命令,而上面讲的-a和-o仅用于在测试表达式中连接两个测试条件,要注意它们的区别,例如,
test "$VAR" -gt 1 -a "$VAR" -lt 3

和以下写法是等价的
test "$VAR" -gt 1 && test "$VAR" -lt 3

‘叁’ shell脚本

Shell脚本基本知识
概述:shell其实是内核与用户之间的一个接口,
shell脚本
如果有一系列经常使用的linux命令,你可以把它们存储在一个文件肿。shenll可以读取这个文件,并执行其中的命令。这样的文件成为脚本文件。
执行shell脚本
要创建一个shell脚本,你要使用任何编辑器比如vi在文本文件中编写他。
为了使用bashshell赖执行脚本magic,其命令是:bashmagic或者./magic
echo命令:
echo“!”
屏幕上就会回显“!”
#符号
用于在shell脚本肿可以包含注解入口
echo“hello”
#thisisacommentline.thiswouldnotproceanyoutput!
echo“world!”
第二行是一个注解的例子。它将被shell忽略,而且不产生任何消息
变量:
可以在任何时间通过简单的赋值来创建。
语法:
<variablename>-<value>
Linux中的所有变量都被当作字符串
引用变量:
$符号用于引用一个变量的内容
variable1=${variable2}
读入值给变量
在执行shell脚本时,shell还允许用户直接从键盘读入一个值给变量,还可以使用read命令来作。
$readfname
本地和全局shell变量
局部变量
当引用shell时,只有创建它的shell能够知道变量的存在
全局变量
称为子shell
shell中创建的变量局部于创建它的shell,除非使用export命令特别指出是全局的。
环境变量:
通过改变这些变量的值,用户能够定制此环境
一些环境变量的例子是HOME,PATH,PS1,PS2,LOGNAME,SHLVL,及SHELL
HOME变量
Linux系统中的每个用户都有一个相关的称作HOME的目录
当一个用户登录后,进入相应的HOME的目录
$echo$HOME
PATH变量
包含一列用冒号定界的目录的路径名字,便于可执行程序的搜索。
PS1变量
PS1(PromptString1)变量包含了shell提示符,$符号
$PS1=“HELLO>”
HELLO>
PS2变量
是为第二个提示符设置值的环境变量
LOGNAME变量
包含用户的注册名字
$echo“${LOGNAME}”
SHLVL变量
该变量包含当前工作的shelllevel
SHELL变量
环境变量存储了用户缺省的shell
env命令
可用来查看所有的已移出的环境变量表和它们各自的值!
命令替换
在单个命令行中使用多个命令的另外一种方法(非Pipes)是通过命令替换
echo“thedatais`date`”
expr命令
用于求之算术表达式。该命令的输出被送到标准输出
$expr4+5
将在屏幕上显示9
算术展开:
你可以在$((…))中括一个表达式,用下面的命令来计算它的值;
$((expression))
example1
编写一个shell脚本用于计算呼叫中心未应答的询问的数量。该脚本应该接受一天那所报告的询问的总数和应答的询问的数量,以便计算未应答的询问的数量。
所有未应答的询问总数=所有询问的总数-应答的询问的数量
<!--[if!supportLists]-->※<!--[endif]-->※※※※※※※※※※※※※※※※※※※※※※※
条件执行
test和[]
求值表达式,并返回true(0)或false()
数值测试:
-eq等于则为真
-ne不等于则为真
-gt大于则为真
-ge大于等于则为真
-lt小于则为真
-le小于等于则为真
if构造
Linuxshell提供了循环和判定的构造,可以在shell脚本中使用
算术测试
结合if构造,它可以用于测试变量的数字值
串测试
test命令也可以用于字符串
=等于则为真
!=不相等则为真
-z字符串长度为零则为真
-n字符串长度不为零则为真
文件测试
test命令也可以用于检查文件的状态
-e文件存在则为真
-r文件存在并且可读则为真
-w文件存在并且可写则为真
-x文件存在并且可执行则为真
-s文件存在并且至少有一个字符则为真
-d文件存在并且为目录则为真
-f文件存在并且为普通文件则为真
-c文件存在并且为字符型文件则为真
-b文件存在并且为块特殊文件则为真
-a并且-o或者!非
exit命令
用于终止shell脚本的执行并返回到$提示符下
case。。。esac
shell脚本中使用的这个构造依据变量的值而执行一组特定指令
当变量的值和其中的一个值匹配的时候,就执行写在该值下的一组命令。
example3
迭代
while构造
while<条件>
do
<命令(s)>
done
只有条件为真的时候,才能执行do与done之间的命令
until构造
until循环构造的求值模式于while循环相反
until循环将继续执行直到求值的条件为真的时候
for构造
forvariable_namein<list_of_values>
do

done
for循环取一列值作为输入并对循环中每个值执行循环
break和contineu命令
同其他语言中的用法
example4
控制进程的执行
请求后台处理
用于请求后台进程的符号是(&)
$wctempfile&
[1]2082
$vinewfile
检查后台进程
ps(进程状态)命令为每个当前的活动的每个进程产生一行入口。
终止后台进程
可用kill,如下所示
kill278
查看完成一个命令所花的时间
你可以使用time命令来查看一个命令从开始到结束所花的时间
timefine/etc–name“passwd”2>/dev/null/dev/null表明忽略错误信息。
管道的介绍
垂直条(|)是管道字符
它只是shell:“|”前面命令的输出作为“|”之后命令的输入发送
ls–l|more
用管道组合命令,功能强大

‘肆’ linux字符接口 中如何创建组群

1.groupadd test //新建test工作组
2.useradd -g test phpq //新建phpq用户并增加到test工作组
注::-g 所属组 -d 家目录 -s 所用的SHELL
3.usermod -G groupname username给已有的用户增加工作组
或者:gpasswd -a user group

‘伍’ linux中的shell脚本创建文件夹,若文件夹存在,则删除重新创建,若不存在,直接创建,为什么我的代码不成

if判断时 [ ]与里面的语句要有个空格:
if [ -d "$dire" ]; then
修改后测试已通过.

这个脚本是在windows下写的么?如果是, 需要注意换行符的问题.

‘陆’ 怎样用powershell 命令添加、删除群组owner

在文件上鼠标右键->属性->安全 ->编辑 把自己(当前用户)给加进去,再删除应当就可以了

‘柒’ linux中如何用指令将用户加入到群组中

按照你的描述,是将用户加入到群组中,不是在新建用户的时候设置所属组,那么应该使用“gpasswd -a [要加入群组的用户名] [要加入的群组名]”。
如果该群组没有组管理员,还应使用“gpasswd -A [管理员帐号] [群组名]”来设置该群组的管理员。群组管理员用来代替root完成将用户加入或移出群组的操作。
使用 usermod -G 命令也可以将用户加入群组,但会产生一个问题,用此命令将用户加入到新的群组后,该用户之前加入的那些群组都将被清空。

‘捌’ linux使用shell编辑个能批量创建用户的脚本,该怎么写

简单例子,仅供参考
#!/bin/sh
number=1
while [ $number -le 10 ]
do
useradd user$number
echo A user was added.
number = `expr $number + 1`
done

‘玖’ 如何编写一个shell脚本

问题:

1、请求在线api, 获取json格式的返回结果
2、解析json里面的一个值
3、将该值存储到文件

开发准备:

1、shell

快速入门:
#!/bin/sh
cd ~
mkdir shell_tut
cd shell_tut
for ((i=0; i<10; i++)); do
touch test_$i.txt
done

创建一个文件夹, 并在里面新建10个文件
2、curl

使用curl请求网络, 并获取返回值
curl基本用法:
$ curl www.sina.com

直接返回网页内容
$ curl -o [文件名] www.sina.com

将网页内容存储到文件中, 相当于wget命令
赋值操作:
response=$(curl www.sina.com)
echo $response

注意: =前后没有空格
jq

jq是命令行解析json的很好的工具
安装
直接到官网下载Linux64版本(我是用本地下载好后传上服务器的, 之前直接在服务器用wget下载一直报错Segmentation fault, 折腾好久~)
将其到bin目录
cp jq-linux64 /usr/bin/jq

使用
然后就可以愉快的使用jq命令了:

可直接查看官网Tutorial
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'

返回的是一个json数组列表
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.'

使用.直接指向json的根节点
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[0]'

[0]为取数组的第0位的对象
jq '.[0] | {message: .commit.message, name: .commit.committer.name}'

可用过连续的.操作获取对应json对象中的属性值, 上面的命令将会生成一个{message: "....", name: "...."}的json对象.
shell文件读写

1、写
方式一:
将ll的内容写入fileName这个文件中

>是覆盖, >>是在后面追加
ll >fileName

但是在书写.sh脚本的时候, 需要增加echo
echo ll>fileName

2、读
while read LINE
do
echo $LINE
done<fileName

fileName是即将读取的文件名

‘拾’ 编写一个shell脚本,添加100个新用户

i=1
for(1..100)
do
groupadsers
adseruser$i-gusers
echouser|passwd"user$1"--stdin
i=$($i+1)
done

添加100用户在users组,并设置密码为user

热点内容
河南电脑服务器托管云主机 发布:2025-03-24 07:10:36 浏览:470
收件服务器应该是什么 发布:2025-03-24 06:52:37 浏览:873
小黄狗编程 发布:2025-03-24 06:43:02 浏览:639
华为手机手画密码如何设置 发布:2025-03-24 06:40:20 浏览:658
读java源码 发布:2025-03-24 06:29:06 浏览:35
欧皇源码 发布:2025-03-24 06:26:18 浏览:858
为什么id密码在异地登录 发布:2025-03-24 06:17:13 浏览:46
google地图连接服务器地址 发布:2025-03-24 06:12:43 浏览:359
安卓怎么样恢复手机删除的视频 发布:2025-03-24 06:07:03 浏览:133
格式化手机usb存储器 发布:2025-03-24 05:52:33 浏览:238