#!/bin/sh # 检查参数数量 if [ "$#" -ne 1 ]; then echo "Usage: $0 " exit 1 fi dir_path="/root/u" # 检查U盘目录是否存在 if [ ! -d "$dir_path" ]; then echo "U盘目录不存在,正在创建U盘目录..." mkdir -p "$dir_path" # 创建目录 else echo "U盘目录已经存在." fi # 获取命令行参数 sequence_number=$1 # 定义一个函数来执行复制操作并输出结果 copy_file() { local source_file="$1" local target_dir="$2" if [ -f "$source_file" ]; then cp "$source_file" "$target_dir" if [ $? -eq 0 ]; then echo "文件 $source_file 已成功复制到 $target_dir 目录。" else echo "复制文件 $source_file 时出错。" exit 1 fi else echo "当前目录下未找到 $source_file 文件。" fi } # 添加 启动脚本 到 /etc/init.d/ copy_file "S79hostapd" "/etc/init.d/" copy_file "S90E-CAP" "/etc/init.d/" #copy_file "S99Check_reboot" "/etc/init.d/" # 移除 启动脚本 rename_file() { local original_name="$1" local new_name="$2" if [ -f "$original_name" ]; then mv "$original_name" "$new_name" if [ $? -eq 0 ]; then echo "已成功将 $original_name 重命名为 $new_name" else echo "重命名 $original_name 时出错。" exit 1 fi else echo "$original_name 文件不存在" fi } rename_file "/etc/init.d/S49weston" "/etc/init.d/_S49weston" rename_file "/etc/init.d/S41dhcpcd" "/etc/init.d/_S41dhcpcd" # 生成 /etc/hostapd.conf 文件 hostapd_config="# 无线网络接口名称,可通过 ifconfig 或 ip addr 命令查看 interface=wlan0 # 使用的驱动程序,通常为 nl80211 driver=nl80211 # 热点的 SSID ssid=E-CAP_${sequence_number} # 通道号,可根据需要调整 channel=6 # 认证和加密模式 hw_mode=g ieee80211n=1 wmm_enabled=1 ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40] macaddr_acl=0 auth_algs=1 ignore_broadcast_ssid=0 wpa=2 wpa_key_mgmt=WPA-PSK wpa_pairwise=TKIP rsn_pairwise=CCMP # 热点的密码 wpa_passphrase=12345678" echo "$hostapd_config" > /etc/hostapd.conf if [ $? -eq 0 ]; then echo "文件 /etc/hostapd.conf 已成功生成。" else echo "生成 /etc/hostapd.conf 文件时出错。" exit 1 fi # 生成 /etc/dnsmasq.conf 文件 dnsmasq_config="# 监听的接口 interface=wlan0 # DHCP 服务的 IP 地址范围 dhcp-range=192.168.10.10,192.168.10.100,255.255.255.0,12h # 网关地址 dhcp-option=3,192.168.10.1 # DNS 服务器地址 dhcp-option=6,8.8.8.8 # 本地 DNS 服务器地址 server=8.8.8.8 # 禁用 DNS 缓存 no-hosts # 不读取 /etc/resolv.conf 文件 no-resolv" echo "$dnsmasq_config" > /etc/dnsmasq.conf if [ $? -eq 0 ]; then echo "文件 /etc/dnsmasq.conf 已成功生成。" else echo "生成 /etc/dnsmasq.conf 文件时出错。" exit 1 fi # 生成 /etc/network/interfaces 文件 network_config="# interface file auto-generated by buildroot auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.${sequence_number} netmask 255.255.255.0 gateway 192.168.1.1 dns-nameservers 192.168.1.1 8.8.8.8 post-up /usr/sbin/ethtool -s eth0 speed 100 duplex full autoneg off pre-down /usr/sbin/ethtool -s eth0 autoneg on # post-up 网络接口被激活之后应该执行的命令。 # pre-down 在网络接口即将被关闭之前执行的命令。 # 添加这两行命令是为了限制网速为100M,解决phy网络排线过长导致网卡不稳定的问题。 auto wlan0 iface wlan0 inet static address 192.168.10.${sequence_number} netmask 255.255.255.0 gateway 192.168.10.1 dns-nameservers 192.168.10.1 8.8.8.8" # 生成 /etc/network/interfaces 文件 echo "$network_config" > /etc/network/interfaces if [ $? -eq 0 ]; then echo "文件 /etc/network/interfaces 已成功生成。" else echo "生成 /etc/network/interfaces 文件时出错。" exit 1 fi if [ ! -d "/root/tiles" ]; then if [ -f "tiles.zip" ]; then # 检查 tiles.zip 文件是否存在 unzip -q "tiles.zip" -d "/root/" # 解压 tiles.zip 到 /root/ 目录 if [ $? -eq 0 ]; then echo "tiles.zip 已成功解压到 /root/ 目录。" else echo "解压 tiles.zip 到 /root/ 目录时出错。" exit 1 fi else echo "当前目录下未找到 tiles.zip 文件。" fi else echo "瓦片文件夹已存在。" fi # 检查当前目录下的 Radarcape_Local_Server_aarch64-buildroot-linux-gnu-gxx_Linux_Debug 文件是否存在 if [ -f "Radarcape_Local_Server_aarch64-buildroot-linux-gnu-gxx_Linux_Debug" ]; then # 给文件添加执行权限 chmod +x "Radarcape_Local_Server_aarch64-buildroot-linux-gnu-gxx_Linux_Debug" if [ $? -eq 0 ]; then echo "已成功给当前目录下的 Radarcape_Local_Server_aarch64-buildroot-linux-gnu-gxx_Linux_Debug 文件添加执行权限。" else echo "给当前目录下的 Radarcape_Local_Server_aarch64-buildroot-linux-gnu-gxx_Linux_Debug 文件添加执行权限时出错。" exit 1 fi else echo "当前目录下未找到 Radarcape_Local_Server_aarch64-buildroot-linux-gnu-gxx_Linux_Debug 文件。" fi # 定义要设置的 root 密码 ROOT_PASSWORD="123" # 使用 expect 来非交互式地修改 root 密码 expect << EOF spawn passwd root expect "New password:" send "$ROOT_PASSWORD\r" expect "Retype new password:" send "$ROOT_PASSWORD\r" expect eof EOF if [ $? -eq 0 ]; then echo "root 用户密码已成功设置。" else echo "设置 root 用户密码时出错。" exit 1 fi