什么是脚本?作用?
上午十点设定eth0网卡IP
192.168.1.100/24
192.168.1.254
下午两点设定eth0网卡IP
172.16.1.100/24
172.16.1.254
ifcfg-eth0
vim交互,只能人来操作
echo “” > /etc/sysconfig/network-scripts/ifcfg-eth0
cat /etc/sysconfig/network-scripts/ifcfg-eth0
cd /etc/sysconfig/network-scripts/
echo “DEVICE=eth0” > ifcfg-eth0
echo “TYPE=Ethernet” >> ifcfg-eth0
echo “ONBOOT=yes” >> ifcfg-eth0
echo “BOOTPROTO=static” >> ifcfg-eth0
echo “IPADDR=192.168.1.100” >> ifcfg-eth0
echo “NETMASK=255.255.255.0” >> ifcfg-eth0
echo “GATEWAY=192.168.1.254” >> ifcfg-eth0
cat ifcfg-eth0
ifdown eth0
ifup eth0
cd /root/Desktop/
vim fixip.sh
#!/bin/bash
cd /etc/sysconfig/network-scripts/
echo "DEVICE=eth0" > ifcfg-eth0
echo "TYPE=Ethernet" >> ifcfg-eth0
echo "ONBOOT=yes" >> ifcfg-eth0
echo "BOOTPROTO=static" >> ifcfg-eth0
echo "IPADDR=192.168.1.100" >> ifcfg-eth0
echo "NETMASK=255.255.255.0" >> ifcfg-eth0
echo "GATEWAY=192.168.1.254" >> ifcfg-eth0
ifdown eth0
ifup eth0
保存退出
chmod +x fixip.sh //fuquan
./fixip.sh
ip addr
cat fixip.sh
公司回随机给你指定不同的IP进行修改
10.1.1.100/24
10.1.1.254
请输入IP地址:
请输入子网掩码:
请输入网关:
变量赋值:
A="hello"
A
echo A //A
echo $A //hello
echo "$A world" //hello world
ipaddr=$ip
read -p “please input ipaddr:” IP
10.1.1.1
echo $IP
vim fixip.sh
#!/bin/bash
read -p "please input ipaddr:" IP
read -p "please input netmask:" MASK
read -p "please input gateway:" WAY
cd /etc/sysconfig/network-scripts/
echo "DEVICE=eth0" > ifcfg-eth0
echo "TYPE=Ethernet" >> ifcfg-eth0
echo "ONBOOT=yes" >> ifcfg-eth0
echo "BOOTPROTO=static" >> ifcfg-eth0
echo "IPADDR=$IP" >> ifcfg-eth0
echo "NETMASK=$MASK" >> ifcfg-eth0
echo "GATEWAY=$WAY" >> ifcfg-eth0
ifdown eth0
ifup eth0
./fixip.sh
10.1.1.100
255.255.255.0
10.1.1.254
ip addr
ip route
//观察一下IP以及子网掩码还有网关已经改变了
if判断语句
if 条件
then 成立子语句
else 不成立子语句
fi //结束语句
vim if.sh
#!/bin/bash
if [ 3 -lt 5 ]
then echo "yes"
fi
chmod +x if.sh
./if.sh
//输出yes
#!/bin/bash
if [ 6 -lt 5 ]
then echo "yes"
fi
./if.sh
//输出无内容
#!/bin/bash
if [ 6 -lt 5 ]
then echo "yes"
else
echo "no"
fi
./fi.sh
//输出no
#!/bin/bash
read -p "please input a num:" NUM
if [ $NUM -lt 10 ]
then echo "lt"
elif [ $NUM -eq 10 ]
then echo "eq"
else echo "gt"
fi
./if.sh
10 //eq
./if.sh
30 //gt
./if.sh
5 //lt
ip addr
ping 12.34.56.79 //通
ping 12.34.56.77 //不通
ping -c2 -i0.2 -W2 12.34.56.79
-c2:发送2个ping包
-i0.2:0.2s间隔时间
ping -c2 -i0.2 -W2 12.34.56.77
ping -c2 -i0.2 -W2 12.34.56.77 &> /dev/null
&>:不管是正确还是错误全部导出
测试主机是否存活:
vim ping.sh
#!/bin/bash
read -p "please input ipaddr:" IP
if `ping -c2 -i0.2 -W2 $IP &> /dev/null`
then echo "$IP is up"
else echo "$IP is down"
fi
chmod +x ping.sh
该脚本只能测试某一IP是否存活,不能测试一个网段IP是否存活
循环语句与case语句(for,while)
for根据取值列表循环
while条件循环
1-10
echo {1…10}
echo {1…100}
for 变量 in 取值列表
do
子语句
done
vim xun.sh
#!/bin/bash
for i in {1..10}
do
echo "hello"
done
chmod +x xun.sh
./xun.sh
//输出10个hello
vim xun.sh
#!/bin/bash
for i in {1..10}
do
echo $i
done
chmod +x xun.sh
./xun.sh
//输出1到10
while条件
do
子语句
done
vim xun.sh
#!/bin/bash
NUM=0
while [ $NUM -lt 3]
do
echo $NUM
done
chmod +x xun.sh
./xun.sh
//全是0,不终止
vim xun.sh
#!/bin/bash
NUM=0
while [ $NUM -lt 3]
do
let NUM++ #写成let NUM=NUM+1也行
echo $NUM
done
chmod +x xun.sh
./xun.sh
//输出1到3
NUM=0
let NUM++
echo $NUM
let NUM=NUM+1
echo $NUM
./xun.sh
class1:
eth0改为桥接模式
vim /etc/sysconfig/network-scripts/ifcfg-eth0
将BOOTPROTO=dhcp
static改为dhcp
ifdown eth0
ifup eth0
ip addr
eth0:10.0.110.216/24
vim ping.sh
#!/bin/bash
NET=10.0.110.
for IP in {1..254}
do
if `ping -c2 -i0.2 -W2 $NET$IP &> /dev/null`
then echo -e "$NET$IP ip \033[31mup\033[0m"
else echo -e "$NET$IP ip \033[32mdown\033[0m"
fi
done
chmod +x ping.sh
./ping.sh
修改为while循环
vim ping.sh
#!/bin/bash
NET=10.0.110.
IP=200
while [ $IP -lt 254 ]
do
let IP=IP+1
if `ping -c2 -i0.2 -W2 $NET$IP &> /dev/null`
then echo -e "$NET$IP ip \033[31mup\033[0m"
else echo -e "$NET$IP ip \033[32mdown\033[0m"
fi
done
chmod +x ping.sh
./ping.sh
case语句
./case.sh centos
输出redhat
./case.sh redhat
输出centos
./case.sh XXXX
useage:case.sh{redhat|centos}
vim case.sh
case $1 in
redhat)
echo "centos"
;;
centos)
echo "redhat"
;;
*)
echo "Useage : $0 {redhat | centos }"
esac
esac是结束符
chmod +x case.sh
./case.sh
./case.sh kdjfkjk
./case.sh
./case.sh redhat
./case.sh centos
case 变量 in
模式1)
子语句
;;
*)
子语句
;;
easc
函数:将一部分代码存储到一个变量中
设计一个函数名字叫做A
运行A的时候屏幕出现ok
A(){
echo ok
echo yes
return 0
}
A
echo $? //查看上一次指令输出的成果也就是返回值0
vim case.sh
redhat(){
echo centos
return 0
}
centos(){
echo redhat
return 0
}
case $1 in
redhat)
redhat
;;
centos)
centos
;;
*)
echo "Useage : $0 {redhat | centos }"
esac
./case.sh redhat
./case.sh centos
service httpd start
service httpd dddd ?//Usage
service httpd stop
cat case.sh
find /etc -name httpd
/etc/rc.d/init.d/httpd
cd /etc/init.d/ #启动和关闭httpd,httpd启动搅拌方便使用
ls
vim httpd
cd /usr/local/
ls
cd webserver/
cd …
cd nginx
cd sbin/
./nginx
如何永久启动nginx?
httpd永久启动?
chkconfig --list httpd
chkconfig --list nginx //找不到nginx
nginx启动脚本:
cd /etc/init.d #复制启动命令存在的/usr/local/nginx/bin路径
vim nginxd
#!/bin/bash #这一行不写也能运行成功,原因:操作系统本身用的就是/bin/bash这个解释器,若用其他解释器不屑这一行就会失败,所以需要写这一行
chmod +x nginxd
vim nginxd
nginx=/usr/local/nginx/sbin/nginx
start(){
echo "nginx starting ... [ ok ] "
$nginx
}
start
记得关闭apache:/etc/init.d/httpd stop
/etc/init.d/nginxd //ok
ss -antpl | grep nginx
vim nginxd
nginx=/usr/local/nginx/sbin/nginx
start(){
echo "nginx starting ... [ ok ] "
$nginx
}
status(){
if `ss -antpl | grep nginx > /dev/null`
then echo "nginx starting ..."
else echo "nginx stoping ..."
fi
}
stop(){
echo "nginx stoping ... [ ok ]"
$nginx -s stop
}
stop
status
./nginxd
./nginxd #报错是因为已经关闭了,如果再关闭就会报错
vim nginxd
start
vim nginx
case $1 in
start)
start
;;
stop)
stop
;;
status)
status
;;
restart)
stop
start
;;
*)
echo "Useage : $0 {start|stop|status|restart}"
esac
./nginxd
/etc/init.d/nginxd start
/etc/init.d/nginxd status
/etc/init.d/nginxd stop
/etc/init.d/nginxd status
/etc/init.d/nginxd restart
/etc/init.d/nginxd status
chkconfig --list | grep nginx #过滤一下有无nginx
why没有?因为系统自带的计入了,自己写的没识别
vim httpd
#chkconfig - 85 15
vim nginxd
第二行写:
# chkconfig: - 84 18
# description: nginx script
chkconfig --list nginxd //meiyou
chkconfig --add nginxd
chkconfig --list nginxd
chkconfig --level 5 nginxd on
reboot
/etc/init.d/nginx status
ss -antpl | grep 80