expect实现自动分发密钥、网站度量术语
1.优化ssh命令
sed -ir '13 iPort 52113\nPermitRootLogin no\nPermitEmptyPasswords no\n
UseDNS no\nGSSAPIAuthentication no' /etc/ssh/sshd_config 保障服务器安全:
a.用密钥登录,不用密码;
b.尽量不配外网ip;
c.跳板机iptables封闭ssh,指定源IP限制;
d.开启ssh只监听内网ip;
e.拨号连接VPN,由vpn去连接跳板机; 通过ssh连接其他linux语法:
ssh -p端口 用户@IP
通过scp拷贝文件、目录的语法:
scp -P端口号 文件名 用户名@IP:目标地址
推送:scp -P端口号 -rp 目录名 用户名@IP:目标地址
拉取到本地:scp -P52113 -rp oldboy@IP:/tmp/etc /data
2.非交互式创建密钥
第一步--所有机器创建用户及密码
useradd oldgirl
echo 123456|passwd --stdin oldgirl
su - oldgirl
第二步--主机名为m01上创建密钥对(两种方法)
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1
echo -e "\n" | ssh-keygen -t dsa -N "" > /dev/null 2>&1
# 如果是默认的22端口,则:
ssh-copy-id -i ~/.ssh/id_dsa.pub oldgirl@172.16.1.41
# 特殊端口分发:
ssh-copy-id -i ~/.ssh/id_dsa.pub "-p 52113 oldgirl@172.16.1.41"
# 目标主机的.ssh/authorized_keys发生变化,
# 为什么是这个文件?(配置文件做了设置)
grep authorized_keys /etc/ssh/sshd_config
#AuthorizedKeysFile .ssh/authorized_keys
以普通用户的身份进行操作,在m01上将/etc/hosts先拷到oldgirl的家目录下,
然后想把hosts拷到目标主机的/etc/hosts,发现权限拒绝,该如何解决这个问题呢?
a.制作密钥对时以root身份,但这样会导致服务器不安全,故不用; b.sudo提权,实现没有权限的用户,去操作主机
# 配置/etc/sudoers(在目标主机)
echo "oldgirl ALL=(ALL) NOPASSWD: /usr/bin/rsync" >> /etc/sudoers
visudo -c # 检查语法
scp -P52113 hosts oldgirl@172.16.1.31:~
ssh oldgirl@172.16.1.31 -t rsync ~/hosts /etc/hosts
# -t参数表示开启终端,ssh指定端口时,用大写或者小写的p都可以
# 出现这种结果表明执行成功--Connection to 172.16.1.31 closed.
# 如果数据量比较大,想用rsync去增量拷贝,可以用隧道模式
rsync -avz hosts -e 'ssh -p 22' oldgirl@172.16.1.31:~ c.以suid的方式(仅当做一种方法即可)
# 将目标主机上的命令增加s权限
chmod u+s `which rsync
# 在m01上'曲线救国'
scp -P52113 hosts oldgirl@172.16.1.31:~
ssh -P52113 oldgirl@172.16.1.31 rsync ~/hosts /etc/hosts
3.expect实现自动分发密钥
# 在m01(0.61)、nfs01(0.31)、web01(0.8)上先创建用户
useradd oldgirl888
echo 123456|passwd --stdin oldgirl888
# 在m01上安装expect并生成oldgirl888的密钥对
yum -y install expect
su - oldgirl888
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa > /dev/null 2>&1
分发密钥的exp脚本
cat send_sshkey.exp
#!/usr/bin/expect
if { $argc != 2 } {
send_user "usage: expect send_sshkey.exp file host\n"
exit
}
# define var 定义变量
set file [lindex $argv 0]
set host [lindex $argv 1]
set password "123456" #spawn scp /etc/hosts root@10.0.0.41:/etc/hosts
#spawn scp -P52113 $file oldboy@host:$dir
spawn ssh-copy-id -i $file oldgirl888@$host
expect {
"yes/no" {send "yes\r";exp_continue}
"*password" {send "$password\r"}
}
expect eof exit -onexit {
send_user "good bye...\n"
}
#example
#expect send_sshkey.exp ~/host 10.0.0.31:~ # 分发并检验
expect send_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.31
ssh oldgirl888@172.16.1.31 /sbin/ifconfig eth0
4.在脚本中调用expect脚本
cat send_sshkey.sh
#!/bin/bash
. /etc/init.d/functions
for ip in 8 31 41
do
expect /home/oldgirl888/send_sshkey.exp ~/.ssh/id_dsa.pub 172.16.1.$ip >/dev/null 2>&1
if [ $? -eq 0 ];then
action "$ip" /bin/true
else
action "$ip" /bin/false
fi
done
5.分发密钥步骤总结(有个描述该总结的脚本,在视频中):
1.所有服务器上禁止root登录,得有一个普通用户,如:oldgirl888,密码统一为123456;
2.sudo提权,echo "oldgirl888 ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
3.在m01上切换到oldgirl888,执行脚本,脚本的内容是:
创建oldgirl888密钥对,给多台服务器分发此密钥,然后分发执行脚本,最后执行此脚本.
6.安装saltstack(事先安装了epel源)
yum -y install salt-master
yum -y install salt-minion
chkconfig salt-master on
chkconfig salt-minion on
7.生产环境常见的HTTP状态码列表
200 - OK,服务器成功返回网页;
301 - Moved Permanently(永久跳转),请求的网页已永久跳转到新位置;
客户端错误:
403 - Forbidden(禁止访问),服务器拒绝请求
404 - Not Found,服务器找不到请求的页面
服务器端错误:
500 - Internal Server Error(内部服务器错误);
502 - Bad Gateway(坏的网关),
一般是网关服务器请求后端服务时,后端服务没有按照http协议正确返回结果;
503 - Service Unavailable(服务当前不可用),可能因为超载或停机维护;
504 - Gateway Timeout(网关超时),
一般是网关服务器请求后端服务时,后端服务没有在特定的时间内完成服务.
8.伪静态网页小结
a.利用rewrite技术将动态网页伪装成静态页面(URL地址改写);
b.便于搜索引擎收录提升用户访问量以及用户体验;
c.性能没有提升,并且转换成伪静态会消耗资源,因此性能不升反降;
d.尽可能将动态网页转换成真正的静态页面;
e.并发不是很大或动态更新过于频繁时,用rewrite实现伪静态也不错;
f.伪静态网页的实现,一般是由运营产品提出需求,开发和运维共同实现的.
9.网站流量--度量术语
a.IP
通过独立IP度量网站访问量,和实际的访问情况不是很匹配,国内的企业、学校多数是用
NAT上网,一个独立IP背后可能有数十上百个客户端,独立IP虽然不是很准确,但也是运维
人员比较关心的一个衡量网站的指标.
b.PV
页面点击量,不管客户端或IP是不是相同,页面被访问一次就算一个PV
c.UV(Unique Visitor)
独立访客,同一台客户端访问网站被认为是一个访客,一天内同一个客户端访问同一个网站
只计算一次UV,一般以Cookie为统计依据.
d.知名网站访问量信息参考
网站 独立IP/日 PV数/日 网站并发数 服务器数
www.51cto.com 58万 130万 1万 几十台
www.58.com 140万 2300万 1万-3万 几百台
www.taobao.com 4600万 5亿 几十万-百万 万台 并发主要是针对服务器而言,是否并发的关键是看用户操作是否对服务器产生了影响,
并发用户数量的正确理解为:在同一时刻与服务器进行了交互的在线用户数量.
比如有10万用户同时在线,本地缓存和CDN就挡住了90%,剩下的10%才会和服务器产生交互. 网站并发量计算(仅当参考):https://blog.csdn.net/qq_41718455/article/details/82048390
expect实现自动分发密钥、网站度量术语的更多相关文章
- 使用 expect 命令执行自动分发系统
一.命令 except 实例详解 1. 介绍 expect 使用场景 expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动 ...
- expect实现自动交互由浅入深
expect实现自动交互由浅入深 作为运维人员可以通过Shell可以实现简单的控制流功能,如:循环.判断等.但是对于需要交互的场合则必须通过人工来干预,有时候我们可能会需要实现和交互程序如telnet ...
- ssh免密码登录之分发密钥
ssh免密码登录之分发密钥 1.ssh免密码登录 密码登录和密钥登录有什么不同? 密码登录(口令登录),每次登录都需要发送密码(ssh) 密钥登录,分为公钥和私钥,公钥相当于锁,私钥相当于钥匙 1.1 ...
- ssh密钥分发之二:使用sshpass配合ssh-kopy-id编写脚本批量分发密钥:
使用sshpass配合ssh-kopy-id编写脚本批量分发密钥: 首先sshpass是一个ssh连接时的免交互工具,首先要安装一下: yum install sshpass -y 接下来我们就可以使 ...
- Linux expect实现自动登录
expect expect可以让我们实现自动登录远程机器,并且可以实现自动远程执行命令.当然若是使用不带密码的密钥验证同样可以实现自动登录和自动远程执行命令.但当不能使用密钥验证的时候,我们就没有办法 ...
- ssh采用expect实现自动输入密码登录、拷贝
1. 引言 最近做了一个项目,需要频繁与另一台主机进行文件的传输:中间想到了很多方式:FTP.samba.curl等,但是还是感觉scp最好用. SCP使用教程可参阅:http://www.jb51. ...
- 通过expect免自动输入密码登陆远程服务器
通过expect免自动输入密码登陆远程服务器 1.前提必须已经安装expect 2.新建login.sh,文件内容如下 #!/usr/bin/expect -f spawn ssh root@140. ...
- 使用expect实现自动登录的脚本
使用expect实现自动登录的脚本,网上有很多,可是都没有一个明白的说明,初学者一般都是照抄.收藏.可是为什么要这么写却不知其然.本文用一个最短的例子说明脚本的原理. 脚本代码如下: ######## ...
- ansible分发密钥
http://www.361way.com/ansible-cfg/4401.html 修改host_key_checking(默认是check的):改为false, host_key_ch ...
随机推荐
- 笔记-python-实用-程序运算时间计算
方法1 import datetime starttime = datetime.datetime.now() #long running endtime = datetime.datetime.no ...
- THUSC2019游记
Day 0 完全没有明明是最后一次机会的紧张感.大概是滚粗的预兆. 住在西郊.房间好小. 和thupc前一样又有一场cometoj,好像又有小裙子了.upd:改成星空棒棒糖! Day 1 早餐有点棒. ...
- 利用Windbg深入理解变量的存储模型
下面的是一个简单的测试程序,基本包括了所有的变量类型,包括静态的,常量的,全局的,本地的,还有new出来的 #include <iostream> using namespace std; ...
- luogu1501 [国家集训队]Tree II
lct裸题 #include <iostream> #include <cstdio> using namespace std; typedef long long ll; i ...
- webdriver高级应用- 禁止IE的保护模式
#encoding=utf-8 from selenium import webdriver from selenium.webdriver.common.desired_capabilities i ...
- Flask_Blueprint(蓝图)
在Flask中,我们需要一个可以模块化的方法. Flask自身给我们提供的就是Blueprint方法. 通过Blueprint,可以让我们实现模块化组织程序结构. 官方文档解释: 代码结构: 核心代码 ...
- Python学习-day6 面向对象概念
开始学习面向对象,可以说之前的学习和编程思路都是面向过程的,从上到下,一步一步走完. 如果说一个简单的需求,用面向过程实现起来相对容易,但是如果在日常生产,面向对象就可以发挥出他的优势了. 程序的可扩 ...
- spring AOP详解三
CGLib采用非常底层的字节码技术,可以为一个类创建子类,并在子类中采用方法拦截的结束拦截所有父类方法的调用,并顺势织入横切逻辑.我们采用CGLib技术可以编写一个可以为任何类创建织入横切逻辑代理对象 ...
- poj 1734 Sightseeing trip判断最短长度的环
Sightseeing trip Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5590 Accepted: 2151 ...
- POJ-1190 生日蛋糕 NOI99
深搜+几个剪枝. 貌似搜索顺序也挺重要的...我不知是不是因为这个然后Tle了好久... #include <cstdio> #include <iostream> #incl ...