首页 > 其他分享 >树莓派系统烧录安装

树莓派系统烧录安装

时间:2023-01-05 22:34:32浏览次数:65  
标签:WAN 树莓 CFRECORD NAME IP 烧录 echo 安装 ID

系统烧录

先格式化,格式化后要重新插拔一下,之后选择系统烧录
官网下载镜像 https://www.raspberrypi.com/software/operating-systems/
使用 ImageWriter 烧录系统

开启ssh

sudo raspi-config

选择 Interfacing Options 再选择 ssh

换源

  1. 备份
    sudo cp /etc/apt/sources.list /etc/apt/sources.list_bak
  2. 换源
    # 中国科技大学
    sudo sed -i 's/deb.debian.org/mirrors.ustc.edu.cn/g' /etc/apt/sources.list
    
  3. 更新
    sudo apt-get update

允许 root 远程登录

passwd <用户名> # root 下,修改root密码

修改配置文件
sudo vi /etc/ssh/sshd_config
设置 PermitRootLogin 参数值为 yes

service sshd restart  # 或者
/etc/initd.d/sshd restart

配置ddns(cloudflare)

ddns脚本 可以直接复制,里面也有教程,记得修改文件权限

点击查看代码
#!/usr/bin/env bash
set -o errexit
set -o nounset
set -o pipefail

# Automatically update your CloudFlare DNS record to the IP, Dynamic DNS
# Can retrieve cloudflare Domain id and list zone's, because, lazy

# Place at:
# curl https://raw.githubusercontent.com/yulewang/cloudflare-api-v4-ddns/master/cf-v4-ddns.sh > /usr/local/bin/cf-ddns.sh && chmod +x /usr/local/bin/cf-ddns.sh
# run `crontab -e` and add next line:
# */1 * * * * /usr/local/bin/cf-ddns.sh >/dev/null 2>&1
# or you need log:
# */1 * * * * /usr/local/bin/cf-ddns.sh >> /var/log/cf-ddns.log 2>&1


# Usage:
# cf-ddns.sh -k cloudflare-api-key \
#            -u [email protected] \
#            -h host.example.com \     # fqdn of the record you want to update
#            -z example.com \          # will show you all zones if forgot, but you need this
#            -t A|AAAA                 # specify ipv4/ipv6, default: ipv4

# Optional flags:
#            -f false|true \           # force dns update, disregard local stored ip

# default config

# API key, see https://www.cloudflare.com/a/account/my-account,
# incorrect api-key results in E_UNAUTH error
CFKEY=

# Username, eg: [email protected]
CFUSER=

# Zone name, eg: example.com
CFZONE_NAME=

# Hostname to update, eg: homeserver.example.com
CFRECORD_NAME=

# Record type, A(IPv4)|AAAA(IPv6), default IPv4
CFRECORD_TYPE=A

# Cloudflare TTL for record, between 120 and 86400 seconds
CFTTL=120

# Ignore local file, update ip anyway
FORCE=false

WANIPSITE="http://ipv4.icanhazip.com"

# Site to retrieve WAN ip, other examples are: bot.whatismyipaddress.com, https://api.ipify.org/ ...
if [ "$CFRECORD_TYPE" = "A" ]; then
  :
elif [ "$CFRECORD_TYPE" = "AAAA" ]; then
  WANIPSITE="http://ipv6.icanhazip.com"
else
  echo "$CFRECORD_TYPE specified is invalid, CFRECORD_TYPE can only be A(for IPv4)|AAAA(for IPv6)"
  exit 2
fi

# get parameter
while getopts k:u:h:z:t:f: opts; do
  case ${opts} in
    k) CFKEY=${OPTARG} ;;
    u) CFUSER=${OPTARG} ;;
    h) CFRECORD_NAME=${OPTARG} ;;
    z) CFZONE_NAME=${OPTARG} ;;
    t) CFRECORD_TYPE=${OPTARG} ;;
    f) FORCE=${OPTARG} ;;
  esac
done

# If required settings are missing just exit
if [ "$CFKEY" = "" ]; then
  echo "Missing api-key, get at: https://www.cloudflare.com/a/account/my-account"
  echo "and save in ${0} or using the -k flag"
  exit 2
fi
if [ "$CFUSER" = "" ]; then
  echo "Missing username, probably your email-address"
  echo "and save in ${0} or using the -u flag"
  exit 2
fi
if [ "$CFRECORD_NAME" = "" ]; then 
  echo "Missing hostname, what host do you want to update?"
  echo "save in ${0} or using the -h flag"
  exit 2
fi

# If the hostname is not a FQDN
if [ "$CFRECORD_NAME" != "$CFZONE_NAME" ] && ! [ -z "${CFRECORD_NAME##*$CFZONE_NAME}" ]; then
  CFRECORD_NAME="$CFRECORD_NAME.$CFZONE_NAME"
  echo " => Hostname is not a FQDN, assuming $CFRECORD_NAME"
fi

# Get current and old WAN ip
WAN_IP=`curl -s ${WANIPSITE}`
WAN_IP_FILE=$HOME/.cf-wan_ip_$CFRECORD_NAME.txt
if [ -f $WAN_IP_FILE ]; then
  OLD_WAN_IP=`cat $WAN_IP_FILE`
else
  echo "No file, need IP"
  OLD_WAN_IP=""
fi

# If WAN IP is unchanged an not -f flag, exit here
if [ "$WAN_IP" = "$OLD_WAN_IP" ] && [ "$FORCE" = false ]; then
  echo "WAN IP Unchanged, to update anyway use flag -f true"
  exit 0
fi

# Get zone_identifier & record_identifier
ID_FILE=$HOME/.cf-id_$CFRECORD_NAME.txt
if [ -f $ID_FILE ] && [ $(wc -l $ID_FILE | cut -d " " -f 1) == 4 ] \
  && [ "$(sed -n '3,1p' "$ID_FILE")" == "$CFZONE_NAME" ] \
  && [ "$(sed -n '4,1p' "$ID_FILE")" == "$CFRECORD_NAME" ]; then
    CFZONE_ID=$(sed -n '1,1p' "$ID_FILE")
    CFRECORD_ID=$(sed -n '2,1p' "$ID_FILE")
else
    echo "Updating zone_identifier & record_identifier"
    CFZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$CFZONE_NAME" -H "X-Auth-Email: $CFUSER" -H "X-Auth-Key: $CFKEY" -H "Content-Type: application/json" | grep -Po '(?<="id":")[^"]*' | head -1 )
    CFRECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records?name=$CFRECORD_NAME" -H "X-Auth-Email: $CFUSER" -H "X-Auth-Key: $CFKEY" -H "Content-Type: application/json"  | grep -Po '(?<="id":")[^"]*' | head -1 )
    echo "$CFZONE_ID" > $ID_FILE
    echo "$CFRECORD_ID" >> $ID_FILE
    echo "$CFZONE_NAME" >> $ID_FILE
    echo "$CFRECORD_NAME" >> $ID_FILE
fi

# If WAN is changed, update cloudflare
echo "Updating DNS to $WAN_IP"

RESPONSE=$(curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$CFZONE_ID/dns_records/$CFRECORD_ID" \
  -H "X-Auth-Email: $CFUSER" \
  -H "X-Auth-Key: $CFKEY" \
  -H "Content-Type: application/json" \
  --data "{\"id\":\"$CFZONE_ID\",\"type\":\"$CFRECORD_TYPE\",\"name\":\"$CFRECORD_NAME\",\"content\":\"$WAN_IP\", \"ttl\":$CFTTL}")

if [ "$RESPONSE" != "${RESPONSE%success*}" ] && [ "$(echo $RESPONSE | grep "\"success\":true")" != "" ]; then
  echo "Updated succesfuly!"
  echo $WAN_IP > $WAN_IP_FILE
  exit
else
  echo 'Something went wrong :('
  echo "Response: $RESPONSE"
  exit 1
fi

ps: 选择默认编辑器 select-editor

标签:WAN,树莓,CFRECORD,NAME,IP,烧录,echo,安装,ID
From: https://www.cnblogs.com/vmbn465/p/17008601.html

相关文章

  • linux 下 mongodb 安装
    linux下mongodb安装地址https://www.mongodb.com/try/download/community选择版本和环境需要下载2个包,mongod和shellpackage选择service复制链接,再选择sh......
  • Camille:隐私合规检测工具-安装
     清单:Mac系统、夜神模拟器3.8.5.7、安卓7.1、X86架构、frida-server-16.0.8-android-x86。--------mac安装frdia的版本和模拟器安装的frida版本要一致。 模拟器开启d......
  • kubeadm安装生产环境多master节点k8s高可用集群
    环境准备三台虚拟机(所有节点做好host解析)cat/etc/hosts127.0.0.1localhostlocalhost.localdomainlocalhost4localhost4.localdomain4::1localhostlocalhost.loc......
  • php+vscode+nginx+Xdebug 安装教程(vscode用debug的调试php)
    环境:window10+ phpstudy+vscode php全篇用php8.0.2,也可以用其他的版本,但要注意所有配置路径都要统一版本一、环境变量将你正在使用的php加入环境变量。因为phpstudy......
  • 域环境的安装
    环境:windowsserver2008与win7旗舰版使用ncpa.cpl查看本地网络连接信息域控必须使用静态ip解析并且需要使用本地ip当做dns来解析域名地址使用dcpromo安装域控程序......
  • Conda安装py3spark环境操作
    查看虚拟环境condaenvlist创建虚拟环境condacreate-npy3sparkpython=3.6删除虚拟环境以及虚拟环境中所有包condaremove-npy3spark--all在虚拟环境中安装包......
  • [unity 2022]unity安装(一)
    一、1、unity官网下载unityhub    官网网址:https://unity.com/    注册登录需要手机下载unityconnect    2、登录在左侧菜单栏......
  • centos7安装jenkins-2.345
    首先去官网下载想要的版本​​https://www.jenkins.io/zh/download/​​选择要安装的系统然后选择要下载的版本下载后上传到你的服务器,执行命令安装jenkinsrpm-ivhjenkin......
  • window下MySQL的压缩包方式安装--单版本或多版本(5.7和8共存)通用
    环境:win11MySQL版本:5.7和8.311.下载MySQL数据库注意:记得查看自己电脑是32位还是64位的,这里下的64位的,64位的电脑可以用32位的包,32位的用64的包可能有问题8版本官网下......
  • 2.树莓派使用frp内网穿透http,https
    原材料准备(在服务端和客户端均执行一次)下载压缩包wgethttps://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz执行以下命令,解压f......