公司项目License系统激活需要获取IP地址、LZ通过ssh服务连接宿主机执行shell脚本语言在docker容器中获取宿主机的MAC地址、磁盘序列号、CPU序列号与License绑定,达到定制化主机系统激活,中间如果报命令不存在的话,下载对应的命令即可,话不多说脚本写起

二、编写脚本

1、 获取宿主机的IP地址

注意: LZ是在宿主机的环境编写脚本获取IP地址的,如果是docker环境内想获取宿主机的IP地址可以容器里面装ssh服务,通过ssh来执行宿主机脚本,或者在宿主机上写个http服务来执行脚本,容器通过暴露的端口来调用

①首先 ifconfig 命令看一下插网线的网卡:可以看到我的网线对应的网卡是em1,ip的内网段是1,且排在内网卡第一位(还有一个内网卡是em2),所以使用hostname -I命令获取IP地址时,再通过awk命令处理打印 $1 就好

②vim编辑一个脚本文件,脚本内容如下:。然后使用sh getIp.sh 命令或者直接./getIp.sh 跑一下脚本查看运行结果

hostname -I|awk '{print $1}'
  • docker 中获取宿主机的IP地址可以使用ssh服务(hostname命令前添加如下: yourIp 是宿主机IP, root 是用户登录名, yourConnectPassword 是用户登录的密码),命令如下:
    sshpass -p 'yourConnectPassword' ssh -o StrictHostKeyChecking=no -p 22 root@yourIp hostname -I|awk '{print $1}'

2、 获取宿主机的MAC地址

vim编辑一个脚本macAddress.sh脚本文件,脚本内容如下:

ifconfig docker0 | grep "ether" | awk '{print $2}'
  • docker 中获取宿主机的MAC地址同样的可以使用ssh服务(ifconfig命令前添加如下: yourIp 是宿主机IP, root 是用户登录名, yourConnectPassword 是用户登录的密码,这里LZ取的是 docker0 这个虚拟网卡对应的mac地址),命令如下:
    sshpass -p 'yourConnectPassword' ssh -o StrictHostKeyChecking=no -p 22 root@yourIp ifconfig docker0 | grep "ether" | awk '{print $2}'

3、获取宿主机的CPU序列号(使用dmidecode命令,在docker容器中或者宿主机内都可获取到)

vim编辑一个脚本cpuAddress.sh脚本文件,脚本内容如下:

dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}'
  • 如果报dmidecode未知命令,则 yum install dmidecode -y //docker需要下载dmidecode
  • docker 中获取CPU序列号同样的可以使用ssh服务(dmidecode命令前添加如下: yourIp 是宿主机IP, root 是用户登录名, yourConnectPassword 是用户登录的密码),命令如下:
    sshpass -p 'yourConnectPassword' ssh -o StrictHostKeyChecking=no -p 22 root@yourIp dmidecode -t 4 | grep ID |sort -u |awk -F': ' '{print $2}'

4、获取宿主机的磁盘序列号 (使用fdisk命令,在docker容器中或者宿主机内都可获取到)

vim编辑一个脚本identifier.sh脚本文件,脚本内容如下:

fdisk -l |grep "Disk identifier" |awk {'print $3'}
  • 这里可能会报GPT支持最新处于实验阶段的警告,问题不大,警告不理会就好
  • docker 中获取磁盘序列号同样的可以使用ssh服务(fdisk命令前添加如下: yourIp 是宿主机IP, root 是用户登录名, yourConnectPassword 是用户登录的密码),命令如下:
    sshpass -p 'yourConnectPassword' ssh -o StrictHostKeyChecking=no -p 22 root@yourIp fdisk -l |grep "Disk identifier" |awk {'print $3'}

结束语:坚定的意志,温柔的心

我们使用 docker run创建 容器 时,可以使用–net选项指定 容器 的网络模式, docker 一共有4中网络模式: 1:bridge模式,–net=bridge(默认)。 这是dokcer网络的默认设置。安装完 docker 系统 会自动添加一个供 docker 使用的网桥 docker 0,我们创建一个新的 容器 时, 容器 通过DHCP 获取 一个与 docker 0同网段的 IP地址 。并默认连接到 docker 0网桥,以此实现 容器 宿主机 的网络互通。如下: 2:host模式,–net=host。 这个模式下创建出来的 容器 ,将不拥有自己独立的Network Namespace,即 s.set_missing_host_key_policy(paramiko.AutoAddPolicy()) # 链接 宿主机 ,172.17.0.1为 docker 虚拟网桥地址,默认为172.17.0.1,可更改
dmidecode 是一个在 Linux 系统 获取 硬件信息的工具。它允许用户查看计算机硬件的详细信息,包括制造商、产品名称、 序列号 等。这个命令能够解析和显示计算机的 DMI (Desktop Management Interface) 数据。 dmidecode -t或者 --type 这个选项后面跟着一个关键词或者...
Question Docker 内需要访问本机的数据库,如何访问。使用127.0.0.1肯定是不行的,因为这个在 Docker 容器 里面指的是 容器 本身。所以,需要走别动渠道进行解决。 Solution 下面几种办法,根据操作 系统 的类型,选取其一即可。 Docker File: RUN /sbin/ip route|awk '/default/ { print $3,\t docker host }' >> /etc/hosts RunTime: (may not use) docker run --add-host docker host:`/sbin/ip route|awk '/def
root@676a5a655357:/# ping host. docker .internal PING host. docker .internal (192.168.65.2) 56(84) bytes of data. 64 bytes from 192.168.65.2 (192.168.65.2): icmp_seq=1 ttl=37 time=0.833 ms 64 bytes from 192.168.65.2 (192.168
# 场景描述 在 centos 7 运行 docker 容器 应用时,需要连接 宿主机 的 mysql 的 3306 端口,发现连接不上, docker 容器 无法访问 宿主机 的 mysql 数据库。但是,在 容器 内访问外部网络是可以 ping 通的。 # 原因分析 在 centos 7 上部署 docker 容器 ,其网络模式采用的是 bridge 模式。 启动 docker 时, docker 进程会创建一个名为 ...
一部分服务打包进 docker docker -compose启动,但是一部分正在开发中,放在host比较方便,比如node.js这种,希望在调试已经封进 docker 容器 的时候,能设置从 容器 网络访问 宿主机 node服务 参考https://www.jb51.net/article/149173.htm docker 安装的时候,会在 宿主机 建立一块虚拟网卡 docker 0, 宿主机 通过... "registry-mirrors": ["https://xxxxx.mirror.aliyuncs.com"], "dns": ["100.xxx.1.20", "100.xx.1xx.250"], "data-root": "/mnt/var/lib/docker" 这里面的 dns 属性值是配置什么的ip地址? Java中的Mysql数据库备份与定时任务快速实现(详细代码示例) weixin_42509093: 写的很好,直接拿来用了 深入解析MybatisPlus多表连接查询实践 热心码民阿振: 感谢仍在行走大佬的光临,您的每一句赞赏都是我前行的动力,如同晨露滋养着娇花,使之更加绚烂夺目。愿我们共同进步与学习