首页 > 代码库 > linux(11)
linux(11)
###代理###
##正向代理##
客户端不能访问服务端,代理访问服务端缓存数据,给客户端看。
本次实验:
客户机ip:172.25.27.227
代理机两个ip:172.25.254.127 172.25.27.127
服务端ip:172.25.254.27
步骤:
(1)代理安装并配置squid
[root@desktop ~]# yum install squid -y ##安装软件
[root@desktop ~]# vim /etc/squid/squid.conf ##修改配置文件
56 http_access allow all #允许所有人访问代理
59 http_port 3128 #访问代理使用端口3128
62 cache_dir ufs /var/spool/squid 100 16 256 ##缓存空间100M,16个一级目录,256个二级目录 便于缓存
(2)服务端
[root@foundation27 ~]# echo 172.25.254.27 > /var/www/html/index.html ##修改默认发布文件
[root@foundation27 ~]# systemctl start httpd ##开启服务
(3)客户端浏览器配置
HTTP PROXY:172.25.254.127 PORT:3128
##反向代理##
代理做好配置,客户端浏览器直接访问代理,不要做其他事情
(1)代理配置文件修改
[root@desktop ~]# vim /etc/squid/squid.conf
56 http_access allow all
59 http_port 80 vhost vport
60 cache_peer 172.25.254.27 parent 80 0 proxy-only
62 cache_dir ufs /var/spool/squid 100 16 256
[root@desktop squid]# systemctl restart squid
(2)浏览器
###脚本###
1.脚本调试模式
bash -x scripts
2.引用和转义
弱引用:"字符串" ,保留字符串字符的文字值,变量和扩展命令在双引号内仍起作用$ ` \ ! 除外
强引用:‘字符串‘ ,保留字符串所有字符文字值,禁用所有扩展
转义:\ 保留下一个字符的文字值
3.变量
用固定字符表示不固定的值
设置系统变量
vim /etc/profile
source /etc/profile
设置用户变量
cd ~
vim .bash_profile
source .bash_profile
设置环境变量
环境变量:把内容传递给子进程的变量
使用env命令显示所有环境变量
export 变量=
4.shell计算命令
(1)$[]表示数学运算
[root@desktop squid]# echo $[7+2]
9
(2)expr表示数学运算
[root@desktop squid]# echo `expr 7 + 2`
9
(3)let表示数学运算
[root@desktop squid]# let a=7+2
[root@desktop squid]# echo $a
9
(4) (())数学计算
[root@desktop squid]# ((b=7+2))
[root@desktop squid]# echo $b
9
4.循环语句
for循环用于列表中的相同命令的重复
[root@desktop test2]# vim 1.sh
#!/bin/bash
for NUM in {1..3}
do
echo $NUM
done
[root@desktop test2]# ./1.sh
1
2
3
5.bash位置参数
位置参数自身:$1,$2,..
位置参数总数:$#
所有位置参数:$@,$*
6.退出状态
命令完成后,返回退出状态。成功时退出状态为0;发生错误时退出状态非零
退出状态值存放在“?”中,若要查看用 echo $? 命令查看
7.test条件判断
test命令可以评估bash脚本中的表达式。当表达式为true,返回零状态;当表达式为false,返回非零退出状态。
语法:
(1)非零或零长度字符串运算符
[root@server mnt]# [ -n westos ] && echo yes || echo no
yes
[root@server mnt]# [ -z "" ] && echo yes || echo no
yes
(2)字符串比较运算符
[root@server mnt]# [ 123 = 123 ] && echo yes || echo no
yes
[root@server mnt]# [ 123 = 12 ] && echo yes || echo no
no
[root@server mnt]# [ 123 != 123 ] && echo yes || echo no
no
[root@server mnt]# [ 123 != 12 ] && echo yes || echo no
yes
(3)数字比较运算符
-eq、-ne、-lt、-le、-gt、-ge
= != < <= > >=
(4)文件状态运算符
test -{b|c|e|f|d|r|w|x|s|L} file/directory
(5)二进制文件运算符
-ef 判断两文件是否节点号相同
-nt,-ot 判断文件时间戳新旧
(6)逻辑运算符
-o 满足任一个
-a 多个同时满足
&& 退出状态为0时执行
|| 退出状态非零时执行
8.if语句
f命令检查if后面的命令或列表的退出值。如果第一个命令评估为true/零,则运行then
之后的命令列表,直至任一else。如果第一个命令评估为false/非零,则运行else与fi之
间的命令列表。
9.case语句
把变量的内容与多个模板进行匹配,再根据成功匹配的模板去决定应该执行哪
部分代码。
10.expect语句
(1)安装expect
yum install expect -y
(2)脚本编写
#!/usr/bin/expect ##告诉操作系统用那个shell执行代码
spawn 命令 ##给后面shell指令加壳,用来传递交互指令
expect "字符" ##问题包含的字符
send "答案\r" ##回答问题
expect eof ##在输出中搜索文件结束符,如果没有这一行,脚本会立即退出,得不到正确结果
interact ##执行完成后保持交互状态,把控制权交给控制台
$argv 参数数组 ##接受从bash传递过来的参数.
linux(11)