############脚本的写法#########
1.
vim /mnt/yiyi.sh
echo # hello world # ## #注释掉了后面的内容,所以看不到
echo \# hello world # ## \转义字符把#转义成为一个普通的字符
echo \# hello world \#
echo 'hello world' ##强引用
echo "* * * * * $HOME * * * * *" ##弱引用
* * * * /root * * * *
echo '* * * * * $HOME * * * * *' ##强引用
* * * * $HOME * * * *
弱引用会使$ `(反引号)等字符失效
而强引用不会
bash -x /mnt/yiyi.sh ##检测脚本
2.变量
FNAME=$westos ##变量1
ONAME=$linux ##变量2
echo $FNAME ##输出1
echo $ONAME ##输出2
ehco ${FNAME}_$ONAME ##输出1和2 需要用{}把变量括起来,然后与其他变量分开
$(date +$(%H:%M:%S)) ##先让括号里面的命令执行,执行完后将结果赋值
vim updown.sh ##测试电脑开关的脚本
for NUM in {1..30}
do
ping -c1(只ping一次) -w1(等待1秒)172.25.254.$NUM &>/dev/null&& echo "172.25.254.$NUM is up" || echo "172.25.254.$NUMis down"
done
#######建立用户#####
!/bin/bash
line=$(cat /mnt/username |wc -l)
for NUM in $( seq 1 $line)
do
USER=$(sed -n ${NUM}p /mnt/username)
PASS=$(sed -n ${NUM}p /mnt/passfile)
useradd $USER
echo $PASS | passwd --stdin $USER
done
#####找名字找到后输出#########
#!/bin/bash
line=$(cat /mnt/user |wc -l)
for NUM in $(seq 1 $line)
do
name=$(sed -n ${NUM}p/mnt/user)
[ "$name" ="yiyi" ] && echo $name girl || echo $name
done
#############倒计时############
#!/bin/bash
for ((i=10;i>0;i--))
do
echo -n $i
sleep 1
echo -ne '\r \r'
done
########90秒倒计时######
#!/bin/bash
for ((i=90;i>0;i--))
do
min=$(($i/60))
sen=$(($i%60))
if [ "$min" = "0"];then
echo -n After${sen} s to end
sleep 1
echo -ne '\r \r'
else
echo -n After${min} m ${sen} s to end
sleep 1
echo -ne '\r \r'
fi
done
########传参#########
sh ping.sh 172.25.254.14 ##脚本后面跟参数
#!/bin/bash
ping -c1 -w1 &>/dev/null $1&& echo $1 is up || echo $1 is down
~
#######参数的用法#########
vim test.sh
#!/bin/bash
\$1 is $1
\$2 is $2
\$# is $#
\$* is $*
\$@ is $@
测试:sh test.sh test redhat linux westos 1
$1 is test
$2 is redhat
$# is 5
$* is test redhat linux westos 1
$@ is test redhat linux westos 1
####$?的用法#####
ls -l
echo $? ##输出为0
ls hello
echo $? ##输出不为0
#######有提示的传参###### 如果脚本后面没有跟参数的话会有提示的
#!/bin/bash
[ -z "$1" ] && echo ERRON:you not give me ipadress&&exit 1 ##判断参数为不为空
ping -c1 -w1 $1 &>/dev/null
if
[ "$?" = "0"];
then
echo $1 is up
else
echo $1 is down
fi
###判断10以内的数字#######
#!/bin/bash
[ "$1" -le 10 -a "$1" -gt 0 ] && echo yes ||echono
~
#####判断匹配#######
#!/bin/bash
if [ "$1" = "westos" ]
then
echo linux
elif
[ "$1" = "linux" ]
then
echo westos
else
echo fuck
fi
作业 创建用户
#####################apache服务#################
lamp ##linux+apache+mysql+php
yum install http -y ##安装服务
firewall-cmd --permanent --add-service=http ##非加密
firewall-cmd --permanent --add-service=https ##加密
firewall-cmd --reload ##加载
cd /var/www/html
vim index.html ##默认发布文件名
####默认端口的修改#####
vim /etc/httpd/conf/httpd.conf
40 #
41 #Listen 12.34.56.78:80
42 Listen 8080 ##修改默认端口为8080
systemctl restart httpd
firewall-cmd --permanent --add-port=8080/tcp ##允许访问8080端口
firewall-cmd --reload ##加载
测试: 在网页中输入172.25.254.114:8080
########默认发布文件的更改######
vim /var/www/html/westos
vim /etc/httpd/conf/httpd.conf
167 <IfModule dir_module>
168 DirectoryIndex index.html westos ##加入westos文件当没有index.html文件的时候去访问westos文件 如果把westos放在index.html前面的话首先访问westos文件
169 </IfModule>
测试:网页中输入172.25.254.114会打开westos文件中的东西
############默认发布目录的改变#########
mkdir /www/html -p ##创建发布目录
vim /etc/httpd/conf/httpd.conf
21 DocumentRoot "/www/html" ##修改发布目录
semanage fcontext -a -t httpd_sys_content_t '/www(/.*)?' ##修改安全上下文才能看到目录下面的文件
restorecon -RvvF /www/ ##重新加载安全上下文
122 <Directory "/www"> ##给发布目录授权
123 Require all granted
124 </Directory>
vim /www/html/index.html
systemctl restart httpd ##重启服务
测试:172.25.254.114 会看到/www/html下面发布文件中的内容
#######虚拟主机(用一个ip发布多个站点)#######
虚拟主机允许您从一个httpd服务器同时为多个网站提供服务。在本节中,我们将了解基于名称的虚
拟主机其中多个主机名都指向同一个IP地址,但是Web服务器根据用于到达站点的主机名提供具有不
同内容的不同网站。
先在有浏览器的客户机里面修改/etc/hosts
172.25.254.114 www.westos.com news.westos.com music.westos.com
然后在有httpd服务的主机里面做以下操作
mkdir /var/www/news ##news的发布目录
mkdir /var/www/music ##music的发布目录
echo hello news > /var/www/news/westos ##news的发布文件
echo hello music > /var/www/music/westos ##music 的发布文件
cd /etc/httpd/conf.d/
vim default.conf
<Virtualhost _default_:80>
Documentroot/var/www/html
customlog"logs/default.log" combine ##四中报错日至全部放在这个文件中
</Virtualhost>
<Directory /var/www/html>
require all granted
</Directory>
~
systemctl restart httpd
测试: www.westos.com
vim news.conf ##news站点子配置文件
<Virtualhost *:80>
servernamenews.westos.com ##访问news.westos.com的时候去找/var/www/news
Documentroot/var/www/news
customlog"logs/news.log" combine
</Virtualhost>
<Directory /var/www/news>
require all granted
</Directory>
systemctl restart httpd
测试: news.westos.com
hello news
vim music.conf ##music站点子配置文件
<Virtualhost *:80>
servernamemusic.westos.com ##当访问music.westos.com的时候去找/var/www/music
Documentroot/var/www/music
customlog"logs/music.log" combine
</Virtualhost>
<Directory /var/www/music> ##授权访问
require all granted
</Directory>
systemctl restart httpd
测试:music.westos.com
[root@apache httpd]# ls /etc/httpd/logs/ ##日至存放目录
access_log default.log error_log music.log news.log
#######对访问的ip进行设置######
vim news.conf
Order allow,deny ##先执行前面的,然后执行后面的 后面的会把前面的覆盖掉
allow from all ##允许所有人访问
deny from 172.25.254.14 ##不允许14号访问
#######用户加密#########
htpasswd -cm apache admin
输入密码
htpasswd -m apache tom
输入密码
#<Directory /var/www/news/admin>
#Authuserfile /etc/httpd/conf/apache ##加密文件位置
#Authname "input your name and passwd"
#Authtype basic ##最基本的加密类型
#Require user admin ##允许admin用户访问
#Require valid-user ##允许所有用户访问
#</Directory>
######apache中的php manual cgi#######
##php##
vim /var/www/news/index.php
<?php
phpinfo ();
?>
vim /etc/httpd/conf/httpd.conf
在里面默认发布文件中加入index.php
yum install php -y
systemctl restart httpd
测试:news.westos.com 就会看到php的首页
#########manual####
yum install httpd-manula -y
mkdir /var/www/news/manual
cd /var/www/news
vim /etc/httpd/conf.d/news.conf
<Directory /var/www/news/manual>
require all granted
</Directory>
测试:news.westos.com/maual ##可以看到maual的主页
#####cgi########
mkdir /var/www/news/cgi/
vim /var/www/news/cgi/index.cgi
#!/usr/bin/perl
print "Content-type: text/html\n\n";
print `date`;
~
perl /var/www/news/cgi/index.cgi ##用perl执行
vim news.conf
<Directory/var/www/news/cgi>
Options +ExecCGI
AddHandler cgi-script .cgi
</Directory>
chmod +x /var/www/news/cgi/index.cgi ##给一个执行权限
perl /var/www/news/cgi/index.cgi
然后我们测试的时候还是不能看到所以关闭selinux
setenforce 0
setenforce 1 ##在开启的情况下我们需要修改安全上下文
sysemctl restart httpd
ls -Z /var/www/cgi-bin -d
semanage fcontext -a -t httpd_sys_script_exec_t '/var/www/news/cgi(/.*)?' ##修改安全上下文
restorecon -RvvF /var/www/news/cgi ##重新加载
测试:news.westos.com/cgi/index.html ##会看到文件里面的只执行效果
#############https#########
mkdir /var/www/login
vim /var/www/login/index.html
netstat -antple | grep httpd
yum install mod_ssl -y ##安装了就有443端口
systemctl restart httpd
yum install crypto-utils -y
hostname
apache.example.com
genkey apache.example.com
获取证书的过程
先看到证书和钥匙的位置
接着选择和是的钥匙大小
安装的时候需要在所在环境里面敲击
NO 拒绝想CA发送请求
点next 拒绝加密钥匙
最后一步 身份验证
vim /etc/httpd/conf.d/login.conf
<Virtualhost *:443>
Servername login.westos.com
Documentroot /var/www/login
Customlog"logs/login.log" combined
SSLEngine on
SSLCertificateFile /etc/pki/tls/certs/apache.example.com.crt ##证书位置
SSLCertificateKeyFile/etc/pki/tls/private/apache.example.com.key ##密码位置
</Virtualhost>
<Directory "/var/www/login"> ##授权
Require all granted
</Directory>
<Virtualhost *:80> ##当找80端口的时候去找443端口 把所有80端口的请求全部重定向由https来处理 网页重写
Servername login.westos.com
RewriteEngine on
RewriteRule ^(/.*)$https://%{HTTP_HOST}$1 [redirect=301]
</Virtualhost>
测试:login.westos.com Web客户端可能会发出它不认可证书发行者的警告。这种情况适用自签名证书。要求Web客户端
绕过证书认证。(对于Firefox,请选择“I Understand the Risks” [我了解风险]、“Add Exception” [
添加例外]和“Confirm SecurityException”[确认安全例外]。)
#######mysql#########
yum install mariadb-server.x86_64 -y ##安装数据库
systemctl start mariadb ##开启数据库
mysql ##启动mysql 没有密码的时候可以直接启动
netstat -autlpe|grep mysqld ##查看数据库端口一般数据库太重要所以要关闭他的接口
vim /etc/my.cnf
skip-networking=1 ##关闭端口
systemctl restart mariadb ##重启
mysql_secure_installation ##对数据库进行加密
回车
输入密码
一路回车
加密后要想启动mysql的话 mysql -uroot -p 紧接着 输入密码就行
######数据库的基本操作###########
how databases; 显示数据库
use mysql; 进入数据库
show tables; 显示数据库中的表
desc user; 查看user表的数据结构
flush privileges; 刷新数据库信息
select host.user,password from user; 查询user表中的host,user,password字段
create database westos; 创建westos数据库
use westos;
create table linux( 创建表,username,password字段
username varchar(15) not null,
password varchar(15) not null
);
select * from mysql.user; 查询mysql库下的user表中的所以
alter table linux add age varchar(4); 添加age字段到linux表中
ALTER TABLE linux DROP age 删除age字段
ALTER TABLE linux ADD age VARCHAR(5) AFTER name 在name字段后添加字段age
show tables;
desc linux;
insert into linux values ('user1','passwd1'); 在linux表中插入值为username = user1,password = password1
update linux set password=password('passwd2') where username='user1'; 更新linux表中user1 的密码为password2
delete from linux where username='user1'; 删除linux表中user1的所以内容
#####数据库的备份和恢复#########
mysqldump -uroot -pyiyibushe --all-database ##备份全部数据库
mysqldump -uroot -pyiyibushe --no-data --all-database ##不备份数据
mysql -uroot -pyiyibushe -e(后面跟的是动作) "drop databasewestos;" ##直接可以删除数据库 不用在mysql环境下面做
mysqldump -uroot -pyiyibuseh westos > /mnt/westos.sql ###备份mysql库到/mnt/westos.sql
要想恢复必须得先有数据库
mysql -uroot -pyiyibushe -e "create database westos;" ##创建数据库
mysql -uroot -pyiyibushe westos < /mnt/westos.sql ###恢复/mnt/westos.sql到westos库
mysql -uroot -pyiyibushe -e "select * from westos.linux;"
######用户和授权########
创建用户
CREATE USER kang@localhost identified by 'westos';
用户授权
GRANT INSERT,UPDATE,DELETE,SELECT on *.*(任何库的任何表) tokang@localhost;
重载授权表
FLUSH PRIVILEGES;
查看用户授权
SHOW GRANTS FOR kang@localhost;
撤销用户权限
REVOKE DELETE,UPDATE,INSERT on *.* from kang@localhost;
删除用户
DROP USER kang@localhost;
######忘记数据库root密码了怎么办######
如果记得数据库的密码,改法如下:
mysqladmin -uroot -pyiyibushe password kang ##将密码改为kang
如果忘记密码的情况下,改法如下;
systemctl stop mariadb ##先关闭服务
mysqld_safe --skip-grant-table & ##跳过密码认证
mysql ##跳过密码认证后直接可以用mysql进入数据库
进去后
update user set password=password('yiyibushe') where user='root'; ##更新mysql库里面user表中的password列
然后退出数据库
ps -aux |grep mysql
然后把所有mysql 的进程杀死
然后开启mariadb
/
##########phpmyadmin###########lamp框架
yum install lftp -y
lftp 172.25.254.250 ##下载phpMyAdmin-3.4.0-all-languages.tar.bz2
mv phpMyAdmin-3.4.0-all-languages.tar.bz2 /mnt/
cd /mnt/
tar jxf phpMyAdmin-3.4.0-all-languages.tar.bz2 -C /var/www/html/ ##解压到/var/www/html
cd /var/www/html/
mv phpMyAdmin-3.4.0-all-languages admin ##重命名
cd admin/
cp config.sample.inc.php config.inc.php ##按模版复制
vim config.inc.php
vim Documentation.txt
vim config.inc.php
$cfg['blowfish_secret'] = 'ba17c1ec07d65003'; ##从 vim Documentation.txt 文件中找到的一串字符复制过去
yum search php
yum install php-mysql.x86_64 -y ##安装php-server
systemctl restart httpd ##重启服务
测试:172.25.254.214/admin(解压后的重命名) root yiyibushe 登陆