ESXi7虚拟机克隆脚本实现

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 #!/bin/sh datastore_path=/vmfs/volumes/datastore1 template_name=CentOS-Base-250609 nts_template_path="$datastore_path/$template_name" new_path=$datastore_path/$1 if [ -d "$new_path" ]; then echo "exists vm : $1" exit 1 fi mkdir $new_path echo "clone vmdk..." vmkfstools -i $nts_template_path/$template_name.vmdk $new_path/$1.vmdk -d eagerzeroedthick echo "clone vmdk2..." vmkfstools -i $nts_template_path/${template_name}_1.vmdk $new_path/$1_1.vmdk -d zeroedthick echo "generate vmx..." cp $nts_template_path/$template_name.vmx $new_path/$1.vmx sed -i '/ethernet[0-9]\.generatedAddress/d' $new_path/$1.vmx sed -i '/annotation = "/d' $new_path/$1.vmx sed -i '/scsi[0-9]\.sasWWID = "/d' $new_path/$1.vmx sed -i '/sched\.swap\.derivedName = "/d' $new_path/$1.vmx sed -i '/migrate\.hostlog = "/d' $new_path/$1.vmx sed -i '/nvram = "/d' $new_path/$1.vmx sed -i '/vc\.uuid = "/d' $new_path/$1.vmx sed -i '/uuid\.location = "/d' $new_path/$1.vmx sed -i '/uuid\.bios = "/d' $new_path/$1.vmx sed -i "/displayName = \"/c\displayName = \"$1\"" $new_path/$1.vmx # custom disk file and ethernet sed -i "/scsi0:0\.fileName = \"/c\scsi0:0.fileName = \"$1.vmdk\"" $new_path/$1.vmx sed -i "/scsi0:1\.fileName = \"/c\scsi0:1.fileName = \"$1_1.vmdk\"" $new_path/$1.vmx if [ -n "$2" ]; then sed -i '/ethernet0\.addressType = "/c\ethernet0.addressType = "static"' $new_path/$1.vmx sed -i "/ethernet0\.address = \"/c\ethernet0.address = \"$2\"" $new_path/$1.vmx else sed -i '/ethernet0\.addressType = "/c\ethernet0.addressType = "generated"' $new_path/$1.vmx sed -i "/ethernet0\.address = \"/d" $new_path/$1.vmx fi echo "register vm..." vim-cmd solo/registervm $new_path/$1.vmx echo "over."

2025-07-22 · 1 分钟 · kyle

Ubuntu清华源配置

修改说明地址 https://mirrors.tuna.tsinghua.edu.cn/help/ubuntu/ mirror https://mirrors.tuna.tsinghua.edu.cn/ubuntu

2025-07-22 · 1 分钟 · kyle

双系统时间问题

Ubuntu win 双系统 时间 要解决 Ubuntu 与 Windows 双系统时间不同步,可以按照以下步骤操作: 打开终端,编辑 /etc/default/rcS 文件,将 “ UTC=yes ” 改成 “ UTC=no ”。 重启进入 Ubuntu 系统,设置好时间。 进入 Windows 系统即可解决时间问题1。或者,也可以在 Windows 系统中使用命令提示符输入 Reg add HKLMSYSTEMCurrentControlSetControl[&Time&]ZoneInformation /v RealTimeIsUniversal /t REG_DWORD /d 1,然后重启进入 Ubuntu 系统 Ubuntu24 解决办法 由于ubuntu24弃用了hwclock,所以不能使用上述方法解决,需要使用如下解决: ...

2025-07-22 · 1 分钟 · kyle

linux作为网关提供路由

1. 配置网卡 1 2 3 4 5 6 7 8 9 10 11 12 13 14 # 编辑网络配置文件 sudo vi /etc/sysconfig/network-scripts/ifcfg-ens1 # 内容如下(示例IP,根据实际情况修改): DEVICE=ens1 BOOTPROTO=dhcp # 或静态IP(需与物理网络同网段) ONBOOT=yes sudo vi /etc/sysconfig/network-scripts/ifcfg-ens2 # 内容如下: DEVICE=ens2 BOOTPROTO=static IPADDR=192.168.10.1 NETMASK=255.255.255.0 ONBOOT=yes 2. 启用IP转发 1 2 3 4 5 sudo vi /etc/sysctl.conf # 取消注释或添加: net.ipv4.ip_forward = 1 # 生效配置 sudo sysctl -p 3. 配置防火墙/NAT 1 2 3 4 5 # 使用firewalld配置 sudo firewall-cmd --permanent --zone=public --add-interface=ens1 sudo firewall-cmd --permanent --zone=internal --add-interface=ens2 sudo firewall-cmd --permanent --zone=public --add-masquerade sudo firewall-cmd --reload 或使用iptables(如果未使用firewalld) 1 2 3 4 5 6 # 或使用iptables(如果未使用firewalld) sudo iptables -t nat -A POSTROUTING -o ens1 -j MASQUERADE sudo iptables -A FORWARD -i ens2 -j ACCEPT # 保存规则(需安装iptables-services) sudo service iptables save sudo systemctl restart iptables DHCP服务 1 sudo yum install dhcp -y 配置dhcp 1 sudo vi /etc/dhcp/dhcpd.conf 1 2 3 4 5 6 7 8 9 10 11 12 # 定义DHCP全局选项(可选) option domain-name "internal.net"; option domain-name-servers 8.8.8.8, 8.8.4.4; # DNS服务器 default-lease-time 600; # 默认租约时间(秒) max-lease-time 7200; # 最大租约时间 # 定义子网段 subnet 192.168.10.0 netmask 255.255.255.0 { range 192.168.10.100 192.168.10.200; # 分配的IP范围 option routers 192.168.10.1; # 网关(指向虚拟机A的ens2) option subnet-mask 255.255.255.0; } 指定DHCP监听的接口 1 sudo vi /etc/sysconfig/dhcpd 1 DHCPDARGS="ens2" # 仅监听内部网络接口 启动DHCP服务并设置开机自启 1 2 sudo systemctl start dhcpd sudo systemctl enable dhcpd 防火墙放行DHCP流量 1 2 sudo firewall-cmd --permanent --add-service=dhcp sudo firewall-cmd --reload

2025-07-22 · 1 分钟 · kyle

IPsec/IKEv2服务部署

https://www.cnblogs.com/aresxin/p/17864829.html 开启内核转发 1 2 3 4 5 6 7 8 # tail -6 /etc/sysctl.conf net.ipv4.ip_forward=1 net.ipv6.conf.all.forwarding=1 net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 # sysctl -p ipsec.conf配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 # cat /etc/ipsec.conf config setup charondebug="ike 1, knl 1, cfg 0, net 1" strictcrlpolicy=no uniqueids=yes # 如果同一个用户在不同的设备上重复登录,yes 断开旧连接,创建新连接;no 保持旧连接,并发送通知; never 同 no, 但不发送通知. cachecrls=no conn ipsec-ikev2-vpn #XAUTH认证需要 auto=add # 当服务启动时, 应该如何处理这个连接项,add 添加到连接表中 compress=no # 是否启用压缩, yes 表示如果支持压缩会启用 type=tunnel keyexchange=ikev2 fragmentation=yes forceencaps=yes dpdaction=clear # 当意外断开后尝试的操作 dpddelay=300s # dpd时间间隔 rekey=no # 不自动重置密钥 left=%any # 服务器端标识,可以是魔术字 %any,表示从本地ip地址表中取 leftid=123.13.12.1 # 服务器端ID标识,这里为你的公网ip,或者@你的域名 leftcert=server.cert.pem # 服务器端证书 leftsendcert=always # 是否发送服务器证书到客户端 leftsubnet=0.0.0.0/0 right=%any # 客户端标识,%any表示任意 rightid=%any rightauth=eap-mschapv2 #KEv2 EAP(Username/Password) rightsourceip=192.168.137.0/24 # 客户端IP地址分配范围 rightdns=223.5.5.5,223.6.6.6 # DNS rightsendcert=never # 客户端不发送证书 eap_identity=%identity # 指定客户端eap id ike=chacha20poly1305-sha512-curve25519-prfsha512,aes256gcm16-sha384-prfsha384-ecp384,aes256-sha1-modp1024,aes128-sha1-modp1024,3des-sha1-modp1024! # 密钥交换协议加密算法列表,可以包括多个算法和协议。 esp=chacha20poly1305-sha512,aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1! # 数据传输协议加密算法列表,对于IKEv2,可以在包含相同类型的多个算法(由-分隔) conn xauth_psk #PSK认证需要 keyexchange=ikev2 # 使用 IKEv2 left=%defaultroute leftauth=psk # 服务器校验方式 leftsubnet=0.0.0.0/0 right=%any rightauth=psk rightsourceip=192.168.137.0/24 auto=add conn IKEv2-pubkey #RSA认证 # 服务器端根证书 DN 名称 leftca="CN=ares" # 服务器证书,可以是 PEM 或 DER 格式 leftcert=server.cert.pem # 不指定客户端证书路径 # rightcert = <path> # 指定服务器证书的公钥 leftsigkey=server.pub.pem # rightsigkey = <raw public key> | <path to public key> # 是否发送服务器证书到客户端 leftsendcert=always # 客户端不发送证书 rightsendcert=never # 服务端认证方法,使用证书 leftauth=pubkey # 客户端认证使用 EAP 扩展认证,貌似 eap-mschapv2 比较通用 rightauth=eap-mschapv2 # 服务端 ID,可以任意指定,默认为服务器证书的 subject,还可以是魔术字 %any,表示什么都行 leftid=%any # 客户端 id,任意 rightid=%any

2025-07-22 · 2 分钟 · kyle

WireGuard服务部署

一、虚拟机A(Ubuntu 20)配置 1. 安装WireGuard 1 2 sudo apt update sudo apt install wireguard resolvconf # 安装WireGuard和DNS工具(如需) 2. 生成服务器密钥对 1 2 3 # 生成私钥和公钥 sudo umask 077 # 确保密钥文件权限安全 sudo wg genkey | sudo tee /etc/wireguard/server_private.key | wg pubkey | sudo tee /etc/wireguard/server_public.key 3. 配置WireGuard服务端 创建配置文件 /etc/wireguard/wg0.conf: ...

2025-07-22 · 4 分钟 · kyle

SMB服务部署

一、安装Samba服务 安装软件包 使用yum安装Samba核心组件: 1 yum install samba samba-client samba-common -y 说明:samba为服务端程序,samba-client提供客户端工具,samba-common包含通用文件。 ...

2025-07-22 · 3 分钟 · kyle

CentOS7最小安装后配置

Linux笔记 * centos被弃用后yum无法正常使用 下载CentOS 7的repo文件 1 2 3 wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo # 或者 curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo 更新镜像源 1 2 3 4 # 清除缓存: yum clean all # 生成缓存: yum makecache 一: Linux基本配置 1. 配置网卡,静态 IP 1 2 3 4 5 6 7 8 9 10 11 12 13 [root@localhost ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33 #修改 BOOTPROTO=static ONBOOT=yes #增加 IPADDR=192.168.197.129 GATEWAY=192.168.197.2 NETMASK=255.255.255.0 DNS1=144.144.144.144 DNS2=1.1.1.1 [root@localhost ~]# systemctl restart network.service 2. 更新yum,安装系统工具net-tools,常用工具,依赖关系 mini 1 yum -y install net-tools vim-enhanced zip unzip curl telnet wget 个人常用 1 [root@localhost ~]# yum -y install net-tools telnet gcc gcc-c++ make autoconf wget curl curl-devel openssl openssl-devel vim-enhanced zip unzip ntpdate patch expect rsync 可选 1 2 [root@localhost ~]# yum -y update [root@localhost ~]# yum -y install net-tools telnet gcc gcc-c++ make autoconf wget lrzsz libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5-devel libidn libidn-devel openssl openssl-devel libxslt-devel libevent-devel libtool libtool-ltdl bison gd gd-devel vim-enhanced pcre-devel zip unzip ntpdate sysstat patch bc expect rsync 3. 关闭SELINUX 1 2 3 4 5 [root@localhost ~]# vim /etc/sysconfig/selinux #SELINUX=enforcing SELINUX=disabled [root@localhost ~]# setenforce 0 4. 设置时间时区 1 2 3 4 5 6 7 8 [root@localhost ~]# yum install ntp #安装ntp服务的软件包 [root@localhost ~]# systemctl enable ntpd #将ntp服务设置为缺省启动 [root@localhost ~]# vim /etc/sysconfig/ntpd #修改启动参数,增加-g -x参数 OPTIONS="-g -x" [root@localhost ~]# systemctl restart ntpd #启动ntp服务 [root@localhost ~]# ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime #将系统时区改为上海时间 (亦即CST时区) 5. 关闭防火墙 (可选,要安全些的话还是老老实实的在需要的时候配防火墙吧) 1 2 [root@localhost ~]# systemctl stop firewalld.service # 关闭 “系统防火墙” [root@localhost ~]# systemctl disable firewalld.service # 关闭 “系统防火墙” 自启动 6. 修改主机名 1 [root@localhost ~]# hostnamectl set-hostname master 7. 配置ssh 1 2 3 4 5 6 7 8 [root@localhost ~]# vim /etc/ssh/ssh_config StrictHostKeyChecking no #免输入yes进行known_hosts添加 UserKnownHostsFile /dev/null #可时时删除known_hosts文件免除known_hosts未更新导致的冲突 [root@localhost ~]# vim /etc/ssh/sshd_config #解决ssh链接慢问题 UseDNS no #UseDNS yes改为no, 如果没有或默认注释就添加UseDNS no GSSAPIAuthentication no #GSSAPIAuthentication yes改为no, 如果没有或默认注释就添加GSSAPIAuthentication no 8.免密登录 (可选) 1 2 ssh-keygen -t rsa cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

2025-07-22 · 2 分钟 · kyle

CentOS7 使用高版本gcc

直接安装 比如:devtoolset-8-gcc-g++ , 或其他版本 然后通过 如下命令启用并进入对应版本环境: 1 2 3 scl enable devtoolset-8 bash #或 source /opt/rh/devtoolset-8/enable 如需直接替换: 1 2 ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/bin/gcc #其他类似

2025-07-22 · 1 分钟 · kyle

CentOS7 上安装 NodeJs

由于 CentOS7 为glibc 2.17,故而无法安装高版本 但可以获取非官方编译包 1 2 3 4 5 # 下载并解压非官方编译包(示例) wget https://unofficial-builds.nodejs.org/download/release/v22.16.0/node-v22.16.0-linux-x64-glibc-217.tar.gz tar -xzf node-v22.16.0-linux-x64-glibc-217.tar.gz -C /usr/local/ ln -s /usr/local/node-v22.16.0-linux-x64/bin/node /usr/bin/node ln -s /usr/local/node-v22.16.0-linux-x64/bin/npm /usr/bin/npm

2025-07-22 · 1 分钟 · kyle