1、备份文件
mv /usr/bin/systemctl /usr/bin/systemctl.old
2、下载systemctl文件
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
3、赋予权限
给脚本赋予执行权限
chmod +x /usr/bin/systemctl
1、备份文件
mv /usr/bin/systemctl /usr/bin/systemctl.old
2、下载systemctl文件
curl https://raw.githubusercontent.com/gdraheim/docker-systemctl-replacement/master/files/docker/systemctl.py > /usr/bin/systemctl
3、赋予权限
给脚本赋予执行权限
chmod +x /usr/bin/systemctl
1、iptables 端口转发
CentOS 7.0 以下使用的是iptables,可以通过iptables实现数据包的转发。
(1)开启数据转发功能
vi /etc/sysctl.conf #增加一行 net.ipv4.ip_forward=1 //使数据转发功能生效 sysctl -p
(2)将本地的端口转发到本机端口
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22
(3)将本机的端口转发到其他机器
iptables -t nat -A PREROUTING -d 192.168.172.130 -p tcp --dport 8000 -j DNAT --to-destination 192.168.172.131:80 iptables -t nat -A POSTROUTING -d 192.168.172.131 -p tcp --dport 80 -j SNAT --to 192.168.172.130 #清空nat表的所有链 iptables -t nat -F PREROUTING
2、firewall 端口转发
CentOS 7.0以上使用的是firewall,通过命令行配置实现端口转发。
(1)开启伪装IP
firewall-cmd --permanent --add-masquerade
(2)配置端口转发,将到达本机的12345端口的访问转发到另一台服务器的22端口。
firewall-cmd --permanent --add-forward-port=port=12345:proto=tcp:toaddr=192.168.172.131:toport=22
(3)重新载入,使其生效。
firewall-cmd --reload
3、rinetd 端口转发
rinetd是一个轻量级TCP转发工具,简单配置就可以实现端口映射/转发/重定向。
(1)源码下载
wget https://li.nux.ro/download/nux/misc/el7/x86_64/rinetd-0.62-9.el7.nux.x86_64.rpm
(2)安装rinetd
rpm -ivh rinetd-0.62-9.el7.nux.x86_64.rpm
(3)编辑配置文件
vi rinetd.conf 0.0.0.0 1234 127.0.0.1 22
(4)启动转发
rinetd -c /etc/rinetd.conf
4、ncat 端口转发
netcat(简称nc)被誉为网络安全界的”瑞士军刀“,一个简单而有用的工具,这里介绍一种使用netcat实现端口转发的方法。
(1)安装ncat
yum install nmap-ncat -y
(2)监听本机 9876 端口,将数据转发到 192.168.172.131的 80 端口
ncat --sh-exec "ncat 192.168.172.131 80" -l 9876 --keep-open
5、socat 端口转发
socat是一个多功能的网络工具,使用socat进行端口转发。
(1)socat安装
yum install -y socat
(2)在本地监听12345端口,并将请求转发至192.168.172.131的22端口。
socat TCP4-LISTEN:12345,reuseaddr,fork TCP4:192.168.172.131:22
6、 portmap 端口转发
Linux 版的lcx,内网端口转发工具。
(1)下载地址:
http://www.vuln.cn/wp-content/uploads/2016/06/lcx_vuln.cn_.zip
(2)监听本地1234端口,转发给192.168.172.131的22端口
./portmap -m 1 -p1 1234 -h2 192.168.172.131 -p2 22
1.进入网卡配置文件
cd /etc/sysconfig/network-scripts/
2.创建新网卡的配置文件 ifcfg-eth1
cp ifcfg-eth0 ifcfg-eth1
这样副网卡配置文件生成了,下面是详细配置
3.ifcfg-eth0配置
# Created by cloud-init on instance boot automatically, do not edit. # BOOTPROTO=static DEVICE=eth0 HWADDR=52:54:00:17:f0:c8 NM_CONTROLLED=yes ONBOOT=yes PERSISTENT_DHCLIENT=yes TYPE=Ethernet USERCTL=no IPADDR0=172.27.0.10 IPADDR1=172.27.0.11 IPADDR2=172.27.0.12 IPADDR3=172.27.0.13 IPADDR4=172.27.0.14 IPADDR5=172.27.0.15 IPADDR6=172.27.0.16 IPADDR7=172.27.0.17 IPADDR8=172.27.0.18 IPADDR9=172.27.0.19 NETMASK=255.255.0.0 GATEWAY=172.27.0.1 DNS1=183.60.83.19 DNS2=183.60.82.98
BOOTPROTO=static,设置为静态IP
DEVICE=eth0,对应网卡配置文件名称
HWADDR=52:54:00:17:f0:c8,对应网卡ID,貌似可以不些
4.ifcfg-eth1配置
# Created by cloud-init on instance boot automatically, do not edit. # BOOTPROTO=static DEVICE=eth1 #HWADDR=20:90:6f:a0:fe:bd NM_CONTROLLED=yes ONBOOT=yes PERSISTENT_DHCLIENT=yes TYPE=Ethernet USERCTL=no IPADDR0=172.27.0.20 IPADDR1=172.27.0.21 IPADDR2=172.27.0.22 IPADDR3=172.27.0.23 IPADDR4=172.27.0.24 IPADDR5=172.27.0.25 IPADDR6=172.27.0.26 IPADDR7=172.27.0.27 IPADDR8=172.27.0.28 IPADDR9=172.27.0.29 NETMASK=255.255.0.0 #GATEWAY=172.27.0.1 DNS1=183.60.83.19 DNS2=183.60.82.98
5.关闭 rp_filter 校验,在 /etc/sysctl.conf 中关闭反向过滤
反向过滤指系统在接收到一个 IP 包后检查该 IP 是否符合要求,不合要求则被丢弃。
例如:用户在 A 网卡上收到一个 IP 包,发送 IP 为 B。而给 B 的 IP 发送时用的网卡不是 A,则会丢弃。由于默认路由走的是主网卡,所以开启反向过滤后,辅助网卡上的 IP 会 ping 不通。
打开配置文件:vim /etc/sysctl.conf。
把配置文件中原配置中的net.ipv4.conf.default.rp_filter = 1,修改成:
net.ipv4.conf.default.rp_filter = 0 net.ipv4.conf.all.rp_filter = 0 net.ipv4.conf.eth0.rp_filter = 0 net.ipv4.conf.eth1.rp_filter = 0
6.重启网络服务
systemctl restart network
7.查看网络配置状态
ip addr
centos查看一层子目录大小
du -h –max-depth=1 wwwroot
宝塔mysql 5.6没法严格模式问题解决
修改/etc/init.d/mysqld 文件
注释掉 other的语句
秒级执行,前面加上sleep就可以解决了
sleep 5;/path/to/script
1.安装Screen
大多数情况下,系统已经安装好了screen。如果没有,可以用下面的命令来安装:
CentOS系统中执行:yum install screen
Debian/Ubuntu系统执行:apt-get install screen
2.常用命令
screen的说明相当复杂,反正我是看得头晕了。但事实上,我们只需要掌握下面五个命令就足够我们使用了:
screen -S test #创建一个名为test的会话
screen -ls #列出所有会话
screen -d test #卸载名为test的会话,但会话中的任务会继续执行。
screen -r test #恢复名为test的会话
exit #退出当前窗口
3.常用快捷键
Ctrl+a c :在当前screen会话中创建窗口
Ctrl+a d : 效果与screen -d相同,卸载当前会话
Ctrl+a w :显示当前会话中的窗口列表,显示在标题栏中
Ctrl+a n :切换到下一个窗口
Ctrl+a p :切换到上一个窗口
Ctrl+a 0-9 :在第0个窗口和第9个窗口之间切换
说明:这里的快捷键由三个键组成,如Ctrl+a c,你可以按住Ctrl键,再依次按下a和c。也可以先按一次Ctrl+a,再按一次Ctrl+c。两种方法都是可行的。
4.使用实例
看着上面罗列的命令和快捷键是不是觉得头晕,没关系,我们还是用一个实例最能说明问题,假设我们要同时执行下面三个个任务:给系统升级,下载一个文件,ping谷歌的域名。
a.先执行screen -S update创建一个名为update的会话。该会话会自动创建一个窗口,在这个窗口中执行系统升级命令yum update -y。如图一所示,注意Putty窗口标题栏中的[screen 0: bash]代表这是第一个窗口(从0开始计数),执行的是bash。
图一:执行yum -update -y
b.按快捷键Ctrl+a c,在当前会话中创建一个新的窗口,然后我们执行wget http://cachefly.cachefly.net/100mb.test,如图二所示,此时Putty窗口的标题栏中显示的是[screen 1: bash],代表这是第二个窗口,执行的也是bash。快捷键Ctrl+a w会在标题栏显示该会话中有哪些窗口。快捷键Crrl+a n或者Ctrl a+p可以在不同窗口之间切换。
图二:执行wget
c.一个会话中可以创建N个窗口,现在假设我们想另外创建一个会话来执行第三个任务。按快捷键Ctrl+a d(也可以执行screen -d update)卸载当前加载的update会话(但该会话中执行的两个任务任然正常运行,相当于被转成了后台进程),然后执行screen,创建一个新的会话(因为此时我们没有使用-S参数指定新创建会话的名字,则screen会按照它的命名规则来命名新的会话,可以参见下面screen -ls命令的执行结果)。现在我们执行ping -c 5 www.linuxidc.com。
d.执行screen -ls可以查看当前所有的会话,如图三所示,可以看到目前有两个会话22080.update和22102.pts-0.hawstname604,其中22080和22102分别是这两个会话的PID,当我们调用screen -r,screen -d等命令时,可以用这个PID代替会话的名字,如screen -d update与screen -d 22080是等效的。会话后面的(Attached)代表该会话已经被加载,(Detached)表示该会话已被卸载。
图三:第一次执行screen -ls
e.执行exit退出当前窗口。当一个会话中的所有窗口都被结束,则该会话会被自动终止,命令行会提示[screen is terminating]。此时再执行screen -ls,会显示只有一个22080.update会话,且处于(Detached)状态,如图四所示。
图四:第二次执行screen -ls
f.执行screen -r update重新加载update会话。可以继续查看前两个任务的执行情况,我们甚至可以中断当前SSH连接,重新连接之后依然可以看到这两个任执行。
就写到这儿了吧,更多关于screen的用法可以参见man screen。说实话,screen是一款功能非常强大的工具,但与此同时,它的帮助文档也写的非常复杂,反正我是看得头晕了,所以才有了这么一篇文章,希望对大家能够有所帮助。