脚本的开头需要用#!/bin/bash 来开始脚本,在脚本中,最好用#注释批注,养成好习惯
在系统里面,默认有一个变量REPLY变量
在declare 可以定义一个变量的类型
declare -i a ------定义了a为整型
可以用echo $?来查找返回值,正确的命令返回值为0,错误的返回正数值
在linux中,可以用test 来做数值的比较
语法为: test $aa -lt $bb --------判断aa变量小于bb变量
也可以用[ ]中括号来进行比较
语法为:[ $aa -gt $bb ] -----表示变量aa 大于变量bb的对比。如果为真
返回0,错误则返回非零正数
判断1 && 判断2 --------“与”连接符,必须两边都必须为真,才返回
如果判断1为假,则不去执行判断2,返回假
总结:&& 必须2边都为真,则返回真
判断1 || 判断2 -------- “或”连接符,只要有一边为真,就执行返回为真
如果判断1为假,则继续执行判断2,判断2为真
就返回真
总结:|| 一边为真,则返回真
条件判断语句
语法:
if 判断语句; then
命令
elif 判断语句;then
命令
else
命令
fi
eg:
#!/bin/bash
grep ^$1 /etc/passwd
if [ "$?" -eq 0 ];then
echo "这个账号存在"
else
echo "这个账号不存在"
fi
例2:
#!/bin/bash
echo "请输入你的年纪:"
read name
if [ $name -lt 0 ] || [ $name -gt 150 ];then
echo "请输入正确的年纪"
elif [ $name -le 20 ];then
echo "你好,年轻人"
elif [ $name -le 50 ];then
echo "你好,中年人"
else
echo "你好,老年人"
fi
定义一个函数function
语法
function test () {
echo "这是一个函数"
}
test #直接用函数名即可调用执行此函数
循环
while [判断语句] ------条件成立,直到不成立结束循环
do
命令
done
until [判断语句] ---------条件不成立,直到条件成立结束循环
do
命令
done
for循环
for xx in 值1 值2 值 3 ...........
do
命令
done
linux账号管理与ACL权限设置
在linux中,1-499 的UID表示为系统账号
普通USER的UID从500开始
用户信息存储在/etc/passwd里面
密码信息存储在/etc/shadow里面
gpasswd -a 用户名 组名 -----把用户名加入到组中
groups 用户名 -----查找该用户属于几个组
useradd 用户名 -----创建用户,未加参数,使用默认
默认值可以修改/etc/default/useradd 来修改默认值
useradd -D -----查看用户的默认属性
创建一个账号的例子
useradd -c "i'm bob" -s /sbin/nologin -d /bob -g tom -G cary.qin -u 1000 bob
此例为创建一个bob的账号,并指明了很多选项
-c 描述
-s 指明shell类型
-d 指明家目录位置
-g 指明所属组(主组)
-G 指明从属组
-u 指明UID号
更改相关信息,可以使用usermod命令
修改USER密码命令
passwd 用户名 -----为用户设定密码
passwd -S 用户名 -----查看是否设定密码
passwd -d 用户名 -----删除用户的密码
chage -d 2015-11-09 账号 -----设定账号最后一次修改密码的时间
chage -E 2015-11-09 账号 ------设定账号过期时间
chage -m 10 -M 20 -w 4 账号 ------为账号设定密码最小天数-m,-M 密码最大天数
-w密码警告天数
对组的操作
groupadd 组名 -----添加组
groupdel 组名 -----删除组
gpasswd -a 用户 组名 -----把用户加入到组
gpasswd -d 用户 组名 -----把用户从组移除
gpasswd -A 用户 组名 ------把用户授权管理组,让此用户可以对这个组进行管理
访问控制列表ACL
getfacl 文件名 -----查看文件的权限
setfacl -m u:tom:rw- xx ------设置xx文件的访问控制权限,访问控制权限优于ugo的权限
u表示user的意思
2.SAN储存设备
SAN ------Storage Area network 存储区域网络
NAS ------Network area storage 网络区域存储
3:网络的配置
system-config-network 可以通过此命令进行配置
setup 也可以
vim /etc/sysconfig/network-script/ifcfg-eth0 ----可以编辑此文件
ls | wc -------可以用wc命令统计文件的数量
可以用iptraf工具对linux系统进行抓包。------此工具为文本界面下的抓包工具
在linux图像下,可以使用wireshark工具进行抓包
客户端DNS文件为/etc/resolv.conf ,本机指向的DNS服务器在此配置
主机名的位置保存在/etc/sysconfig/network里面,在此可以修改主机名
如果为了让自己可以解析自己,可以修改hosts文件里面,让主机名可以
解析出IP地址
在Linux中,可以用route -n 来查看该机器的路由表情况,可以查看网关地址
可以通过cat /etc/resolv.conf文件,查看机器的DNS服务器地址是多少
ip link -----在centos里面可以看网卡的状态
4.在linux服务器中添加新的硬盘并且使用
具体步骤
1.关闭Linux服务器,安装上新的硬盘
在此,我们可以使用fdisk -l 来查看硬盘是否能识别
2.开启linux服务器,对新的硬盘分区
可以使用fdisk /dev/sdb 命令对新加的硬盘进行分区
之后可以使用fdisk 此命令进行分区后,
3.对分区格式化
使用mkfs.ext4 /dev/sdb1 --------对新加的第一块硬盘的第一个分区
进行格式化
或者可以使用
mkfs -t ext4 /dev/sdb1 -----使用此命令也可以格式化磁盘
4.在/ 目录下选择挂载点,并加载,并且同步数据
mount /dev/sdb1 /share ------把share挂载到这个分区
如果需要/share挂载启动自动加载到新硬盘分区,需要修改/etc/fstab这个文件
5.配置etc/fstab文件,使新的硬盘开机自动挂载
fdisk -l ------查看系统的硬盘分区情况
mount ------可以查看硬盘使用的分区一些情况
blkid -------可以查看硬盘的UUID号
linux之间copy数据
首先要启动SSHD服务
scp 192.168.1.100:/etc/passwd /root ---------用scp命令复制192.168.1.100/etc下的
passwd文件复制到本机的root下
还可以使用vsftp,安装ftp服务
启动ftp服务
如何使用SSH工具远程连接管理linux服务器
/etc/sshd/sshd_config 相关配置信息保存在此文件下面
netstat -natp -----查看网络相关端口的信息
linux系统之间可以直接使用ssh +ip 地址即可登陆
gnome-terminal 管理linux系统
可以使用secureCRT putty 及Xmanager等软件来通过SSH管理linux系统
如何更改Linux中的语言环境并按照中文输入法
系统相关默认语言文件存放在/etc/sysconfig/i18n里面,此配置文件管理
全局语言。
如果只改自己目录的语言,不影响全局
~/.bash_profile文件,编辑此文件,在后面新增如下字符
export LANG=zh_CN.UTF-8
export LC_ALL=zh_CN
如果临时让语言变更生效,直接命令即可
LANG=zh_CN.UTF-8
找回root密码
在linux,账号信息保存在/etc/passwd里面,密码信息保存在/etc/shadow里面
通常删除掉/etc/passwd里面账号后面的x,则密码就被取消了。
一般情况下,我们重启进入单用户模式进入系统,即可
在启动选项时,我们选择e 回车,之后选择kernel选线,继续选择e回车。在后面
空格输入1,则选择进入了单用户模式了,直接就进入了系统,不需要输入密码即可
进入系统
/boot/grub/grub.conf
如果系统grub设定有密码,并且你不知道该密码,则无法使用single单用户模式进行
修改密码。则需要使用CD光盘启动密码进入recure救援模式下进行修改