Linux云计算交流群:720995729

48571-tlqjhvsy1g.png

如果需要知道地址和运营商推荐http://cip.cchttp://myip.ipip.net网址:

[root@www.lutixia.cn ~]# curl cip.cc
IP    : 171.43.148.打码
地址    : 中国  ...
运营商    : 电信
...
URL    : http://www.cip.cc/171.43.148.打码

[root@www.lutixia.cn ~]# curl  myip.ipip.net
当前 IP:171.43.148.打码  来自于:中国 。。。  电信

如果只是想知道公网地址,则推荐ip.sb,http://ifconfig.me网址:

[root@www.lutixia.cn ~]# curl ip.sb
171.43.148.打码

[root@www.lutixia.cn ~]# curl ifconfig.me
171.43.148.打码

[root@www.lutixia.cn ~]# curl ip.threep.top
171.43.148.打码

Linux云计算交流群:720995729

48571-tlqjhvsy1g.png

在shell脚本中,经常会遇到获取本机服务器IP地址,下面演示几种常见方法。

grep命令:

[root@www.lutixia.cn ~]# ifconfig ens32 | egrep -o "([0-9]{1,3}\.){3}[0-9]{1,3}" | head -n 1
192.168.75.121

[root@www.lutixia.cn ~]# ifconfig ens32 | egrep -o "([0-9]+\.[0-9]+)+" | head -n1
192.168.75.121

awk命令:

[root@www.lutixia.cn ~]# ifconfig ens32 | awk 'NR==2{print $2}'
192.168.75.121
sed命令:
[root@www.lutixia.cn ~]# ifconfig ens32 | sed -n '/inet /p' | sed 's/inet \([0-9.]\+\).*/\1/' | tr -d ' '
192.168.75.121

获取所有网卡的ip:

[root@www.lutixia.cn ~]# cat ip.sh 
#!/bin/bash
​
ifs=(`ifconfig | grep "^e" | awk -F: '{print $1}'`)
​
for i in `echo ${ifs[@]}`;do
    echo -e  "${i}\n\t`ifconfig ${i} | awk 'NR==2{print $2}'`"
done

Linux云计算交流群:720995729

56927-krdypmekpkp.png

直接在命令行执行下面的命令就可以实现指定目录下指定文件同步:

rsync -a --remove-source-files  /dirs/*.avi host2:/tmp/
 
-a:                          可保留文件所有者权限时间属性等
--remove-source-files:    同步后移除源文件
/dirs/:                   存放avi文件的目录地址
 *.avi:                   所有avi文件
host2:                    另一台主机ip或者主机名
/tmp/:                    临时目录,可以自定义目录

也可以直接写进计划任务,多久同步一次,比如下面这个每五分钟同步一次:

# 编辑计划任务:
[root@www.lutixia.cn ~]# crontab -e

# 计划任务内容,编辑好后,保存退出即可:
*/5  * * * *  rsync -a --remove-source-files  /dirs/*.avi  host2:/tmp/

# 查看任务:
[root@www.lutixia.cn ~]#  crontab -l
*/5  * * * * rsync -a --remove-source-files  /dirs/*.avi host2:/tmp/

Linux云计算交流群:720995729

一、SSH端口转发简介

SSH会自动加密和解密所有SSH客户端与服务端之间的网络数据。但是,SSH还能够将其他TCP端口的网络数据通SSH链接来转发,并且自动提供了相应的加密及解密服务。这一过程也被叫做"隧道"(tunneling),这是因为SSH为其他TCP链接提供了一个安全的通道来进行传输而得名。例如,Telnet ,SMTP ,LDAP这些TCP应用均能够从中得益,避免了用户名,密码以及隐私信息的明文传输。而与此同时,如果工作环境许中的防火墙限制了一些网络端口的使用,但是允许SSH的连接,也能够将通过将TCP用端口转发来使用SSH进行通讯。

1.1 SSH端口转发的两大功能

  • 加密SSH Client端至SSH Server端之间的通讯数据。
  • 突破防火墙的简直完成一些之前无法建立的TCP连接。

二、本地转发

命令:

ssh -L localport:remotehost:remotehostport sshserver

说明:
localport       本机开启的端口号
remotehost      最终连接机器的IP地址
remotehostport        最终连接机器的端口号
sshserver       转发机器的IP地址

选项:
-f 后台启用
-N 不打开远程shell,处于等待状态(不加-N则直接登录进去)
-g 启用网关功能

实验一:实现SSH端口转发——本地转发

  • 背景:企业内部服务器C(123)不允许外部直接访问,服务器B(122)是一个ssh服务器,有一个用户A(121)需要从外部连接到企业内部的C服务器。
  • 原理:用户A通过ssh协议连接到B机器上,再通过B机器做跳板,连接至C机器。
  • 图示如下:

53384-naxk3cz7e1n.png

  • 实验步骤:

1)模拟服务器C不允许A用户连接,在服务器C上输入以下口令:

[root@123 ~]# iptables -A INPUT -s 192.168.75.121 -j REJECT

此时,从A(121)用ssh命令连接服务器C是拒绝的:

[root@121 ~]# ssh 192.168.75.123
ssh: connect to host 192.168.75.123 port 22: Connection refused

2)开启端口转发:

首先,我们在机器A上确认已经开启的端口有哪些:

[root@121 ~]# netstat -nltp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1019/master         
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      940/sshd            
tcp6       0      0 ::1:25                  :::*                    LISTEN      1019/master         
tcp6       0      0 :::22                   :::*                    LISTEN      940/sshd 

从上图中我么已经看出,2222端口没有被占用,所以我们可以选择使用的2222端口:

接着我们建立本地转发的隧道(A上输入以下命令):

[root@121 ~]# ssh -L 2222:192.168.75.123:22 -fN 192.168.75.122

3)在服务器A(121)上输入以下命令,顺利连接到服务器C:

[root@121 ~]# ssh 127.0.0.1 -p 2222
The authenticity of host '[127.0.0.1]:2222 ([127.0.0.1]:2222)' can't be established.
ECDSA key fingerprint is SHA256:p/44EpAOMkSa+lWcrqY6sPhex4UJcnSqSybKOliS+5U.
ECDSA key fingerprint is MD5:e1:eb:77:a9:5a:d5:b5:08:db:3e:d5:6d:bf:0b:d7:9c.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[127.0.0.1]:2222' (ECDSA) to the list of known hosts.

小心!谨慎!Then enjoy your work!

Last login: Sat Feb 19 11:16:28 2022 from 192.168.75.121
[root@123 ~]# 
[root@123 ~]# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: ens32: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 00:0c:29:59:81:50 brd ff:ff:ff:ff:ff:ff
    inet 192.168.75.123/24 brd 192.168.75.255 scope global noprefixroute ens32
       valid_lft forever preferred_lft forever
    inet6 fe80::20c:29ff:fe59:8150/64 scope link 
       valid_lft forever preferred_lft forever

此时,我们可以查看一下服务器B的连接情况:

29561-rjmcwxky70i.png

至此,我们已经实现了A用户在公司外部远程连接C机器的需求。

如果我们想要停止这个隧道,直接把后台的隧道进程杀死就可以了,命令如下:

# 获取ssh的进程:
[root@121 ~]# ps -ef  | grep ssh
root        940      1  0 09:50 ?        00:00:00 /usr/sbin/sshd -D
root       1184    940  0 09:50 ?        00:00:00 sshd: root@pts/0
root       2922      1  0 14:53 ?        00:00:00 ssh -L 2222:192.168.75.123:22 -fN 192.168.75.122
root       2954   2877  0 15:06 pts/0    00:00:00 grep --color=auto ssh
# 关闭进程:
[root@121 ~]# kill -9 2922

三、远程转发

在我们实验一的场景下,首先要满足的是防火墙上必须打开22端口或者其他端口。但是在现实生活中,企业处于安全考虑,只允许主动连接别人,不允许别人连接自己。所以,当防火墙的端口没有打开的时候,这时就要用到远程转发了。

命令:

ssh -R sshserverport:remotehost:remotehostport sshserver

说明:
sshserverport     被转发机器开启的端口号
remotehost       最终连接机器的IP地址
remotehostport    最终连接机器的端口号
sshserver         被转发机器的IP地址

选项:
-f 后台启用
-N 不打开远程shell,处于等待状态(不加-N则直接登录进去)
-g 启用网关功能

实验二、实现SSH端口转发——远程转发

  • 背景:企业内部服务器C只允许ssh连接访问,不允许外部直接访问,服务器B是一个ssh服务器,有一个用户A需要从外部连接到企业内部的C服务器。
  • 原理:B机器访问A用户,给A用户转发
  • 图示如下:

33026-s2v5heep0wm.png

  • 实验步骤:

1)模拟服务器C不允许A用户连接,在服务器C上输入以下口令:

 [root@123 ~]# iptables -A INPUT -s 192.168.75.121 -j REJECT

此时,从A(121)用ssh命令连接服务器C是拒绝的:

[root@121 ~]# ssh 192.168.75.123ssh: connect to host 192.168.75.123 port 22: Connection refused

2)开启隧道转发

这一次,由于防火墙完全关闭,外部的设备连接不进来,所以我们要通过服务器B去连接服务器A,因此,我们的开启隧道命令要在服务器B(122)上运行:

首先,我们要确定一下服务器B(122)上开启了哪些端口:

[root@122 ~]# netstat -ntlpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      920/master          tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      844/sshd            tcp6       0      0 ::1:25                  :::*                    LISTEN      920/master          tcp6       0      0 :::22                   :::*                    LISTEN      844/sshd  

然后,我们选择一个没有被开启的端口开启隧道,进行实验:

[root@122 ~]# ssh -R 2222:192.168.75.123:22 -fN 192.168.75.121

查看服务器A(121)的端口:

[root@121 ~]# netstat -nltpActive Internet connections (only servers)Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      1019/master         tcp        0      0 127.0.0.1:2222          0.0.0.0:*               LISTEN      2992/sshd: root     tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      940/sshd            tcp6       0      0 ::1:25                  :::*                    LISTEN      1019/master         tcp6       0      0 ::1:2222                :::*                    LISTEN      2992/sshd: root     tcp6       0      0 :::22                   :::*                    LISTEN      940/sshd

3)在服务器A(121)上输入以下命令:

 [root@121 ~]# ssh 127.0.0.1 -p 2222小心!谨慎!Then enjoy your work!Last login: Sat Feb 19 14:54:22 2022 from 192.168.75.122[root@123 ~]# 

此时,我们可以查看一下服务器B(122)的连接情况:

56133-y3cakh8tkpa.png

至此,我们已经实现了A用户在公司外部远程连接C机器的需求。

Linux云计算交流群:720995729

《数据分析实战》数据分析实战 由实战经验丰富的两位数据分析师执笔,数据分析实战 首先介绍了商业领域里通用的数据分析框架,然后根据该框架,结合8个真实的案例,详细解说了通过数据分析解决各种商业问题的流程,让读者在解决问题的过程中学习各种数据分析方法,包括柱状图、交叉列表统计、A B测试、多元回归分析、逻辑回归分析、聚类、主成分分析、决策树分析、机器学习等。特别是书中使用的数据都是未经清洗的原始数据,对如何加工数据以用于数据分析也进行了详细的介绍。读者可以使用R语言实际操作数据,体验真实的数据分析流程,避免纸上谈兵。

《数据分析实战》pdf电子书免费下载

下载地址:

运维朱工此处内容已经被作者隐藏,请输入验证码查看内容
验证码:
请关注本站微信公众号,回复“答案”,获取验证码。在微信里搜索“运维朱工”或者“bbfstudy”或者微信扫描右侧二维码都可以关注本站微信公众号。

本站所有资源均来自网络,仅供学习使用。如用于商业用途,请购买正版,谢谢!