全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 1847|回复: 10

[经验] Scaleway星辰开机自动获取ip

[复制链接]
发表于 2023-9-8 23:21:40 | 显示全部楼层 |阅读模式
因为我只有alpine linux,所以我的脚本都是基于alpine linux的:

首先,在/root下建立network.sh,内容如下:

#!/bin/sh
ip route add 169.254.42.42 dev eth0 2>/dev/null
serverinfo=$(curl -s -X GET "http://169.254.42.42/conf?format=json")
ipv6info=$(echo $serverinfo | grep -Eo '"ipv6": {[^}]+}')
address=$(echo $ipv6info | sed -r 's/^.*"address": "([^"]+)".*$/\1/g')
gateway=$(echo $ipv6info | sed -r 's/^.*"gateway": "([^"]+)".*$/\1/g')
netmask=$(echo $ipv6info | sed -r 's/^.*"netmask": "([^"]+)".*$/\1/g')
if [ -n "$address" ] && [ -n "$gateway" ] && [ -n "$netmask" ]; then
  ip addr flush dev eth0
  ip addr add $address/$netmask dev eth0
  ip -6 route add $gateway dev eth0
  ip -6 route add default via $gateway
fi


然后修改/etc/network/interfaces的内容为如下:
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp
        up sh /root/network.sh


是研究了cloud-init的源码,才找到了获取星辰ip的方法。

其他平台的可以自己修改下实现方法。
发表于 2023-9-8 23:23:45 来自手机 | 显示全部楼层
大佬怎么dd alpine linux
 楼主| 发表于 2023-9-8 23:25:17 | 显示全部楼层
ratneo 发表于 2023-9-8 23:23
大佬怎么dd alpine linux

我之前是手动安装的,不过听说不好用的,不过你可以试试netboot来安装
发表于 2023-9-8 23:53:28 | 显示全部楼层
scaleway网站要做什么设置的吗?比如cloud-init开关什么的
发表于 2023-9-8 23:54:07 | 显示全部楼层
手动进vnc里面改一下就行 不经常重启 无所谓
 楼主| 发表于 2023-9-9 01:17:39 | 显示全部楼层
麦田 发表于 2023-9-8 23:53
scaleway网站要做什么设置的吗?比如cloud-init开关什么的

不用,那个开关应该是别的用处。
发表于 2023-9-9 02:24:04 | 显示全部楼层
不会修改,等个debian的
发表于 2023-9-9 03:57:45 | 显示全部楼层
本帖最后由 bcdefg 于 2023-9-9 03:59 编辑
麦田 发表于 2023-9-8 23:53
scaleway网站要做什么设置的吗?比如cloud-init开关什么的


那个开关你让你添加你自定义的信息的
例如开机自动创建用户,设置密钥登陆,用户密码,时区,执行脚本等等

但执行的前提是你机子安装了cloud-init
自带的默认安装了,DD过后可能没了
发表于 2023-9-9 08:02:03 | 显示全部楼层
bcdefg 发表于 2023-9-9 03:57
那个开关你让你添加你自定义的信息的
例如开机自动创建用户,设置密钥登陆,用户密码,时区,执行脚本等 ...

没could-init那添加开机自启也是一样吧
发表于 2023-9-10 21:31:47 | 显示全部楼层
mujj 发表于 2023-9-9 02:24
不会修改,等个debian的

问了一下chatgpt
如果你想在Debian中更新IPv6地址和默认网关信息,可以编辑/etc/network/interfaces文件以替换旧的IPv6地址和网关信息。以下是如何使用Shell命令来实现这一目标:

  1. #!/bin/bash

  2. # 使用curl获取JSON格式的IPv6地址信息
  3. json_data=$(curl -s http://169.254.42.42/conf?format=json)

  4. # 解析JSON数据以获取IPv6地址信息
  5. ipv6_address=$(echo "$json_data" | jq -r '.ipv6.address')
  6. ipv6_gateway=$(echo "$json_data" | jq -r '.ipv6.gateway')

  7. # 更新IPv6地址和网关信息
  8. sudo sed -i "s/address .*$/address $ipv6_address\/112/" /etc/network/interfaces
  9. sudo sed -i "s/gateway .*$/gateway $ipv6_gateway/" /etc/network/interfaces

  10. # 重新启动网络服务(可选)
  11. sudo systemctl restart networking
复制代码

这个脚本首先使用curl获取JSON格式的IPv6地址信息,然后使用jq解析JSON数据以获取新的IPv6地址和网关。接着,它使用sed命令来替换/etc/network/interfaces文件中的旧地址和网关信息。最后,如果需要,它重新启动了网络服务以使更改生效。
请确保你的系统已经安装了jq,它用于解析JSON数据。你可以使用以下命令来安装jq:
  1. sudo apt-get update
  2. sudo apt-get install jq
复制代码

请确保在运行脚本之前备份/etc/network/interfaces文件,以防出现意外情况。同样,根据你的系统配置,可能需要适当调整网卡设备名称和文件路径。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2024-5-21 15:43 , Processed in 0.141454 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表