下载用机顶盒

在机顶盒刷个hi-nas,然后进终端,装python3,再开机就运行py文件

systemd是现代Linux系统中用于初始化系统组件和管理系统进程的标准。以下是创建一个systemd服务用于开机就启动这个文件,基本步骤:

  1. 创建一个服务文件,例如/etc/systemd/system/myservice.service,内容可能如下:
[Unit]
Description=My Python Service
After=network.target

[Service]
User=yourusername
ExecStart=/usr/bin/python3 /path/to/your_script.py
Restart=always
WorkingDirectory=/path/to/your_script_directory

[Install]
WantedBy=multi-user.target

请将yourusername替换为你的用户名,/path/to/your_script.py替换为你的Python脚本的实际路径,/path/to/your_script_directory替换为你的Python脚本所在的目录。

  1. 重新加载systemd配置以识别新服务:
sudo systemctl daemon-reload
  1. 启动服务:
复制sudo systemctl start myservice.service
  1. 使服务在开机时自动启动:
sudo systemctl enable myservice.service
  1. 检查服务状态:
sudo systemctl status myservice.service

以下是用到的py文件

import requests
import time
import datetime
from concurrent.futures import ThreadPoolExecutor
import random
#import logging

#logging.basicConfig(level=logging.INFO, format='%(asctime)s - %(name)s - %(levelname)s - %(message)s')

urlList = ['https://dldir1v6.qq.com/weixin/Windows/WeChatSetup.exe', 'https://qrsj.gdl.netease.com/LauncherGame__697327.exe', 'https://downloadclient03.ztgame.com.cn/ztmianfei/client/zhengtu_setup_20231228.zip', 'https://pm.myapp.com/invc/xfspeed/qqpcmgr/download/QQPCDownload320059.exe', 'https://d4.a.kwimgs.com/kos/nlav12667/5.35.1/KwaiLive-Setup-5.35.1.2005-ReleaseFull.exe', 'https://sta-op.douyucdn.cn/dypc-client/pkg/DYTool/20240510183635704/master_DYToolEX_6.3.1.3.472.exe', 'https://download.huya.com/huyapc/install/HuyaClientInstall.exe']
thread = 5  #线程数量
goal = 0  #消耗的流量单位GB
if goal > 0:
    goal = goal * 1024 * 1024 * 1024  #GB转为B

wasted = 0  #已消费的流量
runing = 0  #正在运行的数量
#线程池
executor = ThreadPoolExecutor(max_workers=thread)
#下载连接池
session = requests.Session()
adapter = requests.adapters.HTTPAdapter(pool_connections=thread, pool_maxsize=thread+1, max_retries=1, pool_block=False)
session.mount('http://', adapter)
session.mount('https://', adapter)




# 下载文件
def download(url):
    try:
        global runing
        runing += 1
        response = session.get(url, stream=True, timeout=(10, 30))  # 连接超时10秒,读取超时30秒
        if response.status_code == 200:
            download_start_time = time.time()  # 开始下载的时间
            for chunk in response.iter_content(chunk_size=10240):  # 按块读取文件内容
                if chunk:  # 确保chunk不为空
                    pass  # 处理文件内容,例如写入文件

                # 检查下载是否超过30分钟
                if time.time() - download_start_time > 1000:  # 1800秒 = 30分钟
                    #print(f"Download has exceeded 30 minutes: {url}")
                    break  # 终止下载循环

    # except requests.exceptions.RequestException as e:  # 捕获requests异常
    #     print(f"Request failed: {e}")
    # except Exception as e:  # 捕获其他异常
    #     print(f"An error occurred: {e}")
    finally:
        runing -= 1
        if response:
            response.close()  # 关闭下载连接


def startDownload():
    time.sleep(random.randint(1, 10))
    global wasted
    wasted = 0
    # 开始下载
    i = thread
    while i > 0:
        executor.submit(download, random.choice(urlList))
        # 休眠0.01秒-0.1秒
        time.sleep(random.randint(1, 10) / 100)
        i -= 1


if __name__ == "__main__":
    startDownload()
    while True:
        # 获取当前时间
        curtime = datetime.datetime.now()
        hour = curtime.hour
        if 6 <= hour < 18:
            if (goal == 0 or wasted < goal) and runing < thread:
                #logging.info("补充下载链接数:%s", thread - runing)
                i = thread - runing
                while i > 0:
                    executor.submit(download, random.choice(urlList))
                    time.sleep(random.randint(1, 10) / 100)
                    i -= 1
            time.sleep(95)
        elif 18 <= hour < 24:
            if (goal == 0 or wasted < goal) and runing < thread:
                #logging.info("补充下载链接数:%s", thread - runing)
                i = thread - runing - 2
                while i > 0:
                    executor.submit(download, random.choice(urlList))
                    time.sleep(random.randint(1, 10) / 100)
                    i -= 1
            time.sleep(95)
        else:
            if (goal==0 or wasted < goal) and runing < thread:
                #logging.info("补充下载链接数:%s", thread - runing)
                i = thread - runing - 1
                while i> 0:
                    executor.submit(download, random.choice(urlList))
                    time.sleep(random.randint(1, 10) / 100)
                    i-=1
            time.sleep(95)







服务器部署Navidrome开源音乐服务器

可以用来自建云端音乐播放器,让你在任何地方通过浏览器或者手机来收听自己的音乐,兼容 Subsonic、Aironic 播放器

支持各大平台,包括:

  • Windows
  • macOS
  • Linux
  • Docker

这次用docker安装,先安装docker,我是直接用宝塔装了个docker管理器,

然后进终端

mkdir -p /opt/docker/navidrome && cd /opt/docker/navidrome && mkdir -p /music && chmod 755 -R /music

新建docker-compose.yaml文件并编辑

执行以下命令,新建 docker-compose.yaml 文件并编辑

nano docker-compose.yaml

然后输入以下配置内容,然后 Ctrl X + y +回车 退出并保存即可。

---
version: "3"
services:
  navidrome:
    image: deluan/navidrome:latest
    ports:
      - 2079:4533
    restart: unless-stopped
    environment:
      ND_SCANSCHEDULE: 1h
      ND_LOGLEVEL: info
      ND_SESSIONTIMEOUT: 24h
      ND_BASEURL: ""
      ND_DEFAULTLANGUAGE: zh-Hans
      #设置默认语言为简体中文
      ND_ENABLESHARING: "true"
      #开启共享功能
    volumes:
      - /opt/docker/navidrome:/data
      - /music:/music:ro

docker-compose.yaml 文件中 2079 为暴露端口,4533上传页面,如被占用,请自行更改替换,需要在云服务器的控制台防火墙开放相应端口!然后放音乐文件的文件夹设置的根目录下的music

docker compose up -d
启动容器
浏览器访问服务器 IP:2079 即可访问,还可以配置反向代理加个域名,还可以用支持Subsonic/Madsonic/Airsonic 的客户端来播放。
各种第三方客户端:

iOS: play:Sub, substreamer, Amperfy and iSub
Android: DSub, Subtracks, substreamer, Ultrasonic  Audinaut
推荐https://ultrasonic.gitlab.io/download/
Web: Subplayer, Airsonic Refix, Aurial, Jamstash and Subfire
Desktop: Sublime Music (Linux) and Sonixd (Windows/Linux/macOS)
CLI: Jellycli (Windows/Linux) and STMP (Linux/macOS)
Connected Speakers:
Sonos: bonob
Alexa: AskSonic
Other:
Subsonic Kodi Plugin
Navidrome Kodi Plugin
HTTPDirFS

echo命令-Linux简单脚本编写及应用

Echo在windows下的命令的语法很简单。以下是Echo命令的基本语法:

echo string

其中,string是要输出的任意文本。Echo命令可以输出任何纯文本,包括数字、字母、标点符号等。

输出计算机用户名

echo My Name is %username%

输出当前时间

echo The time is %time%

关闭回显,且不显示命令行本身(另存为.bat运行)

@echo off

echo 这是第一行

将输出重定向到文件

echo “Hello World!” > d:\output.txt

如果您想要将输出附加到现有文件的末尾,则可以使用“>>”运算符。

echo “This is a second line!” >> d:\output.txt

echo在liunx下命令类似

命令格式:

echo [参数] [字符串]

常见参数:

-n:不自动换行,输出字符串后不跟随回车符。

-e:允许输出字符串中的转义字符,如“\n”表示换行符、“\t”表示制表符等。还有一些转义符可以用-h查看

-E        明确禁止反斜杠转义

常见用法:

1. 输出字符串:

echo “Hello world”

2. 输出变量值:

name=”Linux”

echo “The operating system is $name”

3. 向文件写入文本:

echo “This is a test” > test.txt

4. 输出多行文本:

echo -e “line1\nline2\nline3”

此处就是用-e参数来使后面的转义字符\n生效了,才会输出多行,

echo -e “line1\nline2\nline3”

[root@server dir]# echo -e 'aaa\bbbb'
aabbb
此处就是用-e参数来使后面的转义字符\b生效了,\b表示退格,也就是向左删除一个字符

还可以设置颜色,命令:echo -e “\e[背景颜色;文字颜色;显示方式m字符串\e[0m” ,也可以\033来代替\e

注意事项:

1. 如果字符串中包含空格或特殊字符,需要使用引号将字符串括起来,以避免被解析为命令参数。

2. 如果需要将命令的执行结果作为字符串输出,在命令前面加上“$”符号即可,如:

echo “The date is $(date)”

下面我们来写一个liunx下的脚本 设定ens33网卡

  • IP:192.168.1.100/24
  • 网关:192.168.1.254
[root@localhost Desktop]# vim fixip.sh ——创建新的文件
 
  1 #!/bin/bash
  2 cd /etc/sysconfig/network-scripts/
  3 echo
  4 echo "DEVICE=ens33" > ifcfg-ens33
  5 echo "TYPE=Ethernet" >> ifcfg-ens33
  6 echo "ONBOOT=yes" >> ifcfg-ens33
  7 echo "BOOTPROTO=static" >> ifcfg-ens33
  8 echo "IPADDR=192.168.1.100" >> ifcfg-ens33
  9 echo "NATMASK=255.255.255.0" >> ifcfg-ens33
 10 echo "GATEWAY=192.168.1.254" >> ifcfg-ens33
 11 ifdown ens33
 12 ifup ens33
 

添加运行权限(+x):

[root@localhost Desktop]# chmod +x fixip.sh

此时ls文件的颜色会由白色变成蓝色

下面来执行命令

[root@localhost Desktop]# ./fixip.sh
./fixip.sh: line 2: cd: etc/sysconfig/network-scripts/: No such file or directory

Device ‘ens33’ successfully disconnected.
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/18)
[root@localhost Desktop]#

此时IP就会设置好,下面再来优化下脚本为交互式脚本,给变量赋值,使其更加人性化

先了解下变量赋值

[root@localhost Desktop]# A="hello" ——为变量A赋值
[root@localhost Desktop]# echo A 
A
[root@localhost Desktop]# echo $A ——通过$A 调出它所表示的值(字符串)
hello
[root@localhost Desktop]# echo "$A world"
hello world
[root@localhost Desktop]# 

再来了解下利用read -p输入

-p参数允许在read命令行中直接指定一个提示如:

read -p “输入网站名:” website

echo “你输入的网站名是 $website”

exit 0

运行并按提示输入 xtaa.cn

结果会是:你输入的网站名是 xtaa.cn

所以上面的配置文件可以优化为:

[root@localhost Desktop]# vim fixip.sh
 
  1 #!/bin/bash
  2 read -p "please input ipddr:" IP
  3 read -p "please input netmask" MASK
  4 read -p "please input gateway:" WAY
  5 cd /etc/sysconfig/network-scripts/
  6 echo
  7 echo "DEVICE=ens33" > ifcfg-ens33
  8 echo "TYPE=Ethernet" >> ifcfg-ens33
  9 echo "ONBOOT=yes" >> ifcfg-ens33
 10 echo "BOOTPROTO=static" >> ifcfg-ens33
 11 echo "IPADDR=$IP" >> ifcfg-ens33
 12 echo "NATMASK=$MASK" >> ifcfg-ens33
 13 echo "GATEWAY=$WAY" >> ifcfg-ens33
 14 ifdown ens33
 15 ifup ens33

下面进一步学习If语句

Linux 中 大于: -gt 小于: -lt 等于: -eq 

————单分支——判断3是否小于5:

[root@localhost Desktop]# vim if.sh
 
  1 #!/bin/bash
  2 if [ 3 -lt 5 ]
  3 then echo "yes"
  4 fi
[root@localhost Desktop]# chmod +x if.sh
[root@localhost Desktop]# ./if.sh
yes

—多分支语句:利用输入变量判断

[root@localhost Desktop]# vim if.sh
 
  1 #!/bin/bash
  2 read -p "please input a num:" NUM
  3 if [ $NUM -lt 5 ]
  4 then echo "lt"
  5 elif [ $NUM -eq 10 ]
  6 then echo "eq" 
  7 else echo "gt"
  8 fi
[root@localhost Desktop]# ./if.sh
please input a num:10
eq
[root@localhost Desktop]# ./if.sh
please input a num:30
gt
[root@localhost Desktop]# ./if.sh
please input a num:5
gt

最后写一个脚本来检测内网主机存活状态(语句:if+for+while)

先来看下ping 操作的修饰:

  • -c 指定其发送几个包
  • -i 发间隔时间
  • -w 等待响应时间
  • &> 文件 将前面的输出结果导入到别的地方(我们要将其输出的结果不显示)

ping -c2 -i0.2 -w2 12.34.56.78 &> /dev/null

好,接下来来ping单个主机

[root@localhost poem]# vim ping.sh ——创建编写文件
  1 #!/bin/bash
  2 if `ping -c2 -i0.2 -w2 192.168.123.124 &> /dev/null`
  3 then echo "yes"
  4 else echo "no"
  5 fi  
[root@localhost poem]# chmod +x ping.sh ——赋权
[root@localhost poem]# ./ping.sh ——执行
no ——输出结果
[root@localhost poem]# 

输出结果为 no ,表示该主机不存在或未开启(未存活)

接下来我想IP由我输入

  1 #!/bin/bash
  2 read -p "please input ipaddr:" IP
  3 if `ping -c2 -i0.2 -w2 $IP &> /dev/null`
  4 then echo "yes"
  5 else echo "no"
  6 fi

接下来我想要扫描整个网段要用到for或者while

  • for 根据循环的次数(取值列表)
  • 循环 while 根据条件循环

for用法为:

for 变量 in 取值列表

do

子语句

done

while用法为:

while 条件

do

子语句

done

下面用for来实现

[root@localhost poem]# vim ping.sh
  1 #!/bin/bash
  2 NET=10.168.1.
  3 for IP in {100..115}
  4 do
  5   if `ping -c2 -i0.2 -w2 $NET$IP &> /dev/null`
  6   then echo -e "$NET$IP is \033[31mup\033[0m" (修改输出颜色)
  7   else echo -e "$NET$IP is \033[32mdown\033[0m" (修改输出颜色)
  8   fi
  9 done

可以用于网络嗅探

用whilt实现

[root@localhost poem]# vim ping.sh
  1 #!/bin/bash
  2 NET=10.168.1.
  3 IP=100
  4 while [ $IP -lt 115 ]
  5 do
  6   let IP++
  7   if `ping -c2 -i0.2 -w2 $NET$IP &> /dev/null`
  8   then echo -e "$NET$IP is \033[31mup\033[0m"
  9   else echo -e "$NET$IP is \033[32mdown\033[0m"
 10   fi
 11 done

机顶盒到ubuntu-nas

论坛https://bbs.histb.com/官网https://www.ecoo.top/

支持的机顶盒列表https://www.ecoo.top/histb.html

装socket5: 需要自行准备节点!没有正确的节点配置文件是无法联通的。
安装下面的脚本后盒子打开了 Socks5 的代理服务功能, 端口号10808
你在浏览器或者系统自行设置通过盒子的IP192.168.12.106代理 Socks5 上网即可

1234567install-v2ray.sh --version v5.1.0       # 终端输入这句命令自行安装systemctl status v2ray      # 查看运行状态是否正常curl --socks5 127.0.0.1:10808 google.com  # 返回 301 字样则成功install-v2ray.sh --remove   # 终端输入命令即可卸载 v2ray# 节点配置文件在 /usr/local/etc/v2ray/config.json# 注意:需要自行准备节点!没有正确的节点配置文件是无法联通的。

装好系统后里面有alist等

装docker部署OpenWRT-(装上后旁路由实测无法科学上网)

hi3798mv100型号,其它型号自行测试。

  • 设置网络
    把网卡混杂模式打开
  • sudo ip link set 你自己的网卡名称 promisc on
    ifconfig
    ##以下是我的网卡名称,每台设备可能不一样,要注意!!!!
    sudo ip link set eth0 promisc on
    打开后为eth0: flags=4419<UP,BROADCAST,RUNNING,PROMISC,MULTICAST> mtu 1500
  • 创建 docker 网卡
    IP地址和网关根据自己的情况设置
    docker network create -d macvlan --subnet=192.168.1.67/24 --gateway=192.168.1.1 -o parent=eth0 macnet

-OpenWrt 标准镜像
原项目地址:https://github.com/SuLingGG/OpenWrt-Docker
一般情况下阿里云镜像仓库比较快
armv7
DockerHub———sulinggg/openwrt:rpi1
阿里云镜像仓库—–registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi1

arm8/aarch64
DockerHub———sulinggg/openwrt:armv8
阿里云镜像仓库—–registry.cn-shanghai.aliyuncs.com/suling/openwrt:armv8

x86_64/amd64
DockerHub———sulinggg/openwrt:x86_64
阿里云镜像仓库—–registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64

查看系统架构 uname -a

##以下是hi3798mv100系统架构是armv7

创建并启动docker 镜像
docker run --restart always --name openwrt -d --network macnet --privileged registry.cn-shanghai.aliyuncs.com/suling/openwrt:armv7 /sbin/init
其它系统架构只需更改registry.cn-shanghai.aliyuncs.com/suling/openwrt:rpi1

  • 设置Openwrt容器 ip


点击进入bash命令控制台
输入 vim /etc/config/network
其它设置不用改,自行设置config interface ‘lan’下边 option ipaddr为OpenWRT的IP,geteway是主路由IP(网关)
如果报错重启容器再试。

  • 重启网络
    /etc/init.d/network restart

重启网络, 重启完成后便可以通过浏览器访问了

网心云
docker run -d \
–name=wxedge \
–restart=always \
–privileged \
–net=host \
–tmpfs /run \
–tmpfs /tmp \
-v /mnt/sda1:/storage:rw \
onething1/wxedge
1.-v 冒号前半部分改成自己本地路径,该路径重装时保持不变,则节点不变
2.安装完成后,使用IP:18888,登录后管界面,使用网心云APP扫描页面下方的二维码绑定

下面是在海纳斯上面装上tailscale

#停止固件自带的tailscale
systemctl stop tailscaled
#关闭固件自带的tailscale的开机自启
systemctl disable tailscaled
#删除执行文件和服务文件
rm -rf /usr/bin/tailscaled
rm -rf /etc/systemd/system/tailscaled.service
#执行官方的安装脚本
curl -fsSL https://tailscale.com/install.sh | sh
#启动软件并设为自启
systemctl start tailscaled
systemctl enable tailscaled
#启动软件,并在链接中登录账号
tailscale up

另外说下服务器做流量出口节点设置

在服务器上打开forword

 echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

再设置可以做出口节点sudo tailscale up -advertise-exit-node

最后在https://login.tailscale.com/admin/machines的节点最右边编辑路由设置里打开Use as exit node,

其它的节点设置exit node为这个服务器,就可以这个服务器为出口代理来上网了。

Linux 常用命令总结

网上找了不少 Linux 方面的资料,令我想不通的是,这么简单的东西,为什么可以写的这么复杂。。我本地装了一个 Ubuntu 虚拟机,云上装了一个 CentOS,用着用着就熟练了

Linux 的命令格式

[root@localhost~]#

  • root: 当前登录用户
  • localhost: 主机名
  • ~ : 当前所在目录
  • : 超级用户的提示符
  • $ : 普通用户的提示符
  • / 开头的是绝对路径
  • . 是当前目录,统计目录可以省略 ./
  • .. 当前目录的父目录
  • cd 更改当前目录到家目录
  • cd – 更改当前目录到先前的目录
  • 每个用户都有一个家目录,默认在 /home/用户名
  • root 用户的家目录是 /root

文件命令

常规

  • 命令格式 [选项] [参数]
  • tap 自动补全命令
  • 打印当前工作目录: pwd
  • 查看文件类型 file
  • 查询目录中内容 ls [选项] [文件或目录]
    • ls -l 显示所有文件
    • ls -lh 人性化显示所有文件
    • ls -a 显示所有文件 以.开头的都是隐藏文件
  • cd (change direcotry):
    • 更改工作目录到先前的工作目录
  • cp (copy):
    • cp a.txt b.txt
    • 复制 a.txt 并把新文件命名为 b.txt
    • 复制目录要加上 -r 参数 cp -r a b
  • mkdir (创建一个目录)
    • -p 可以一次性创建多层目录
    • mkdir -p a/b/c
  • rmdir (remove empty directories) 删除一个空目录
  • rm
    • 这个命令直接删除东西,很危险,一般不要用
    • 删除文件或者目录
    • -f 强制删除
    • -r 用来删除目录
  • mv (用来移动文件\文件夹 或者改名)
    • mv a.txt b.txt 此为改名
    • mv b.txt ../
    • mv b.txt ../gua.txt
    • 可以用 mv xx /tmp 的方式来将文件放入临时文件夹(/tmp 是操作系统提供的临时文件夹,重启会删除里面的所有文件,可以替代 rm 删除命令)
  • cat 显示文件内容
  • tac 反过来显示文件内容
  • nl 显示内容并附带行号
  • more(分屏分批看文件内容)
  • less(比 more 好用,可以前后退看文件)
  • head,tail (显示文件的前,后10行)
  • head 和 tail 有一个 -n 参数 head-n 20 a.txt 显示20行
  • touch a.txt 如果文件存在就更新修改时间,不存在就创建文件

文件解压缩

  • tar -cf name.tar name 压缩
  • tar -tf name.tar 显示压缩的文件 tar -tvf name.tar 显示详细信息(都是只显示,不解压。v表示显示详细信息)verbose(详细)
  • tar -xf name.tar 解压(抽取)
  • tar -czvf name.tar.gz name (加了一个 z,以gz格式压缩)
  • tar -tzvf name.tar.gz (加了一个 z,以gz格式查看)
  • tar -xzvf name.tar.gz (加了一个 z,以gz格式抽取)
  • tar -cvf|tvf|xvf tar -czvf|tzvf|xzvf 记住这一行就行了
  • compression(create)listextract(提取)

文件编辑(vim)

  • touch 可以新建文件,vim 也可以直接新建文件
  • 打开后,写入内容,按 i 键(insert)
  • 退出 按 esc :wq 保存退出
  • 移到第一行 gg;移到最后一行 G
  • 删除一整行 dd;恢复 u。前提是从 insert 模式中切换出来
  • 复制一整行 yy;粘贴 p
  • 文件的权限 r-w-x 4-2-1 读-写-可执行

权限操作

  • sudo 用管理员账户执行程序(安装程序或修改一些系统配置都需要管理员权限)
  • su (switch user) 切换用户 su root
  • ll 全部显示

信息查找

  • file 显示文件类型
  • uname 显示操作系统名字或者其它信息 -r(内核) -a(全部)
  • whoami 查看当前身份
  • find . -name “*.py” 查找所有以 .py 结尾的文件

符号

  • ~ 家目录快捷方式
  • > 覆盖式重定向
  • >> 追加重定向

网络

  • ifconfig(查看 ip 一般使用这个)
  • ip addr(也可查看 ip)

SSH

  • ssh,安全外壳协议,建立在应用层,专为远程登录会话和其它网络服务提供安全性的协议
  • 以下内容在 CentOs 中操作,Ubuntu 中相关文件位置自行 Google

服务器安装 SSH 服务

  • 安装 yum install openssh-server
  • 启动 service sshd start
  • 设置开机运行 chkconfig sshd on
  • 服务器版本的操作系统一般都已经装好。桌面版的可能没有

客户端安装 SSH 工具

  • windows下很多工具支持,Xshell,Putty,secureCRT
  • Linux平台安装 yum install openssh-clients
  • 客户端连接SSH服务 ssh root@公网ip 实际与新建会话是一样的+
  • exit 回到本地

SSH config(配置)

  • 以下讲的都是linux客户端的config),客户端的config才能对自己生效
  • config 方便管理员批量管理多个 ssh
  • config 存放在 ~/.ssh/config(.ssh目录下没有的话就touch config新建一个)
  • SSH config 语法关键字:
    • Host 别名
    • HostName 主机名
    • Port 端口(ssh服务的默认端口为22)
    • User 用户名
    • IdentityFile 密钥文件的路径
    • 配置了config之后,连接服务器直接 ssh 别名 “` host “tencent” HostName xxx.xx.x.xx User root Port 22

### SSH安全免密码登录:ssh  key

+ 普通登录:`ssh username@xxx.xx.x.xx`
+ ssh key 使用非对称加密方式生成公钥和私钥
+ 私钥存放在本地 `~/.ssh` 目录
+ 公钥可以对外公开,放在服务器的 `~/.ssh/authorized_keys` 
+ Linux 平台生成 ssh key:
	+ 客户端cd ~/.ssh/
	+ 客户端使用 ssh-keygen -t rsa 命令亦可 ssh-keygen -t dsa
	+ 服务端在 authorized_keys 文件中写入客户端生成的公钥
	+ 客户端将密钥加载到ssh服务中:`ssh-add ~/.ssh/私钥文件`
+ windows 平台生成 ssh key:
	+ 直接在 xshell 工具栏中生成
	+ 在 ~/.ssh 目录下建立 authorized_keys 文件,编辑放入公钥
+ 如果是新用户,则还要修改一下权限

cd /home/username/ chmod 700 .ssh cd /home/username/.ssh chmod 600 authorized_keys


### SSH安全端口

+ 避免服务器的远程连接端口被别人知道
+ 改变 SSH 服务端口:修改 `/etc/ssh/sshd_config`(里面也可以添加连接的端口,这是对服务器端的操作)

## 软硬件的安装、查看

### 软件操作(CentOs)

+ 软件包管理器: yum
+ 安装软件: `yum intall xxx`
+ 卸载软件: `yum remove xxx`
+ 搜索软件: `yum serach xxx`
+ 清理缓存: `yum clean packages`
+ 列出已安装: `yum list`
+ 软件包信息: `yum info xxx`

### 软件操作(Ubuntu)

+ `sudo apt-get install name` `sudo apt install`
+ 备份Ubuntu默认源地址 `sudo cp /etc/apt/sources.list /etc/apt/sources.list.backup`
+ 更新源服务器列表,即 `/etc/apt/sources.list`
+ `sudo apt-get update` sudo apt install 
+ `sudo apt-get remove name` 删除包
+ `sudo apt-cache search package` 搜索软件包
+ `sudo apt-cache show package`  获取包的相关信息,如说明、大小、版本等

### 硬件操作

+ 内存: `free -m`
+ 硬盘:`df -h`
+ 负载: `w/top`
+ cpu: `cat /proc/cpuinfo`

## 其它

### kill

+ `sudo netstat -tnlp` 查看所有进程端口占用情况
+ `sudo kill xxpidxx` 杀死进程

### 防火墙

+ `yum install firewalld`				安装
+ `service firewalld start`			启动
+ `service firewalld status`			检查状态
+ `service firewalld stop/disable` 	关闭/禁用防火墙

+ 可能已默认安装,用 `yum list |grep firewall` 检查

+ `firewall-cmd --version` 	查看版本
+ `firewall-cmd --help`		查看帮助文档
+ `firewall-cmd --state`		查看运行状态

> 在防火墙有区域和端口的区分

+ `firewall-cmd --get-zones` 查看区域
+ `firewall-cmd --get-default-zone` 默认区域
+ `firewall-cmd --list-all-zone` 列出每一个区域的配置信息
+ `firewall-cmd --query-service=ssh` 查询服务
+ `firewall-cmd --remove-serivce=ssh` 删除服务
+ `firewall-cmd --add-service=ssh` 添加服务
+ `firewall-cmd --list-services` 列出所有服务
+ `firewall-cmd --query-port=22/tcp` 查询端口是否开启
+ `firewall-cmd --add-port=22/tcp` 开启端口
+ `firewall-cmd --remove-port=22/tcp` 关闭端口
+ `firewall-cmd --list-ports` 查看所有打开的端口

+ 端口和服务的概念
+ 删除服务后开启端口依然可以(已实测)
+ 安装了服务都会开启默认端口,不用特意操作。测试时关闭防火墙

### 提权 、上传、下载

+ 提权:sudo
+ root 下通过 visudo 命令将用户加入到文件中

Allows people in group wheel to run all commands

%wheel ALL=(ALL) ALL %rong ALL=(ALL) ALL “`

  • 一般不用 root 进行操作。都是将用户加入文件,用用户操作,特殊命令用 sudo 提权
  • 文件下载
    • wget wget http://www.baidu.com
    • curl curl -o filename http://www.baidu.com 将下载下来的文件命名为 filename
  • 文件上传
    • scp上传文件格式为 scp 文件名 用户@公网地址:路径 例:scp a.txt rong@192.168.x.xxx:/tmp/ (scp是 secure copy的缩写, scp是linux系统下基于ssh登陆进行安全的远程文件拷贝命令)
    • 下载 scp rong@192.168.x.xxx:/tmp/a.txt ./ 格式为:scp 用户名@公网地址:服务器上文件地址 文件要保存的本机地址以上是 linux 下的操作,windows 下见下
    • 服务器上安装软件 yum install lrzsz(在linux里可代替ftp上传和下载)
    • 服务器端 rz 上传命令(服务器端 receive)
    • 服务器端 sz filename 从服务器端下载文件(服务器端 send)
    • ZMODEM 协议

微软azure免费云服务器实操

进azure,

注册,绑卡(可用双币信用卡),

里面可以送200刀有效期1个月,第一个月内改成即用即付模式就liunx和windows各一台1年免费,如果1个月内没改就会直接帐户失效

还有一些其它始终免费的服务,比如翻译每月有200万的免费额度,个人完全够用。

创建虚拟机资源,注意选可以免费用的镜像和免费用的64G硬盘,在可用性选项中要选没有基础结构冗余的,大小选择B1s这种1核1G的,在网络中新建公网IP,在里面SKU选基本,动态IP,要不会产生费用,但弹性动态公网IP会在每次关机再启动后变动,直接重启是不变的,所以要固定IP的就会要另想办法。

选的ubuntu在建资源时一般会建一个azureuser用户,并下载一个ppm私钥,如连接不上可以在里面修改密码然后不用私钥,直接用密码连接,

我一般在创建时就直接选择用帐号密码,比如自己建一个帐号ppp,那你建好你的ubuntu机器后就直接用这个登录,如果要root权限,可以sudo passwd root先把root的密码设置下,然后su root就可以用了。

实测韩国中心区ping值88

要注意还有流量限制,每月只有15G,但好像有人说实际是100G,你可以在之前创建资源时建的《订阅》右下角有个热门免费服务,再在最下面的查看所有免费服务中查看免费资源的使用情况和到期时间等信息!

浪潮SA5212M4的IPMI设置

最近在马云家看到浪潮SA5212M4的服务器性价比很好,缺点就是风扇的噪音受不了,按卖家提示在IPMI设置风扇转速来降噪

进BIOS,选择Server Mgmt –>BMC network configuration,进入BMC网络配置界面

里面的BMC Sharelink是指把网口2也复用为管理口,后面的dedicated才是我们的专用管理口设备,选Get BMC Dedicated 选择Manual 配置独享BMC端口的IP

configuration选择static; 配置为静态模式,填一个管理IP地址

如果原用户admin 密码admin有效,可略过下面的BMC用户设置,不行则按下新增

BMC用户设置:进进BIOS,选择Server Mgmt –>BMC User Settings在里面新增一个用户,里面的通道选1,权限选administrator,新增完后还要在charge里把用户enable.

然后就可以把自己电脑IP设置为以上管理IP同网段的地址,网线连接IPMI管理口来来访问,记得要用https,进去后把风扇速度设置为手动控制20%就可以了,

设置后,拔了电源线会失效,但如果在系统内关机不断电不会失效。

青龙

先宝塔,里面装docker,再用以下命令在docker中装青龙

docker run -dit \
  --name QL \
  --hostname QL \
  --restart always \
  -p 5700:5700 \
  -v $PWD/QL/config:/ql/config \
  -v $PWD/QL/log:/ql/log \
  -v $PWD/QL/db:/ql/db \
  -v $PWD/QL/scripts:/ql/scripts \
  -v $PWD/QL/jbot:/ql/jbot \
  whyour/qinglong:latest

再在宝塔和云服务器后台放开入站规则5700端口,然后登录

获取京东cookies,

chrome浏览器访问 https://m.jd.com 然后点击 我的并用手机京东app扫描弹出来的二维码。

然后F12打开浏览器调试工具,点击 Application找到 Cookies 点击 https://home.m.jd.com,

在右边我们找到 pt_key和 pt_pin两个变量的值,将他们记录下来。

配置环境变量

在我们拿到 pt_key和 pt_pin两个变量后我们就可以开始配置青龙面板的环境变量了。

在面板的右上角我们可以看到环境变量这个选项,我们点击增加。

在弹出的窗口中输入变量,名称为 JD_COOKIE 值就是刚刚获取的 pt_key和 pt_pin两个变量,注意别搞反了(中间和后面的分号不可少),如

pt_key=AAJhuUiCADQS_fjhNxcGreONxMHJdtIQ1Tg0dCJK4n3FHHqW4sEv3Y-4dmXH1C8;pt_pin=jd_6ca591d6a;

拉取脚本库

在配置好环境变量后我们就可以开始拉取脚本了,由于脚本库会更新我们拉取脚本的命令也可以放在定时任务中。

添加库:

进入面板-右上角“定时任务”-分别填入相关信息。提供个人设置,给大家参考。其中任务名、任务定时可自定义。

名称:

拉取京东脚本

拉库命令填写下方代码:

ql repo https://gh.fakev.cn/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sign|sendNotify|ql|JDJR"

或者:

ql repo https://hub.fastgit.xyz/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sign|sendNotify|ql|JDJR"

PS:两者任选其一即可

国外鸡可直连Github的话填写下方代码

ql repo https://github.com/KingRan/KR.git "jd_|jx_|jdCookie" "activity|backUp" "^jd[^_]|USER|utils|function|sign|sendNotify|ql|JDJR"

定时规则(每天8点30):

30 8 * * *

填写完毕后我们点击播放按钮运行一次脚本,稍等一下,让它转一会儿。然后刷新页面,就能看到库的脚本了

看到上面的内容可以说就大功告成了,京东脚本就会按照脚本设置的时间自动执行任务获取京豆和红包。

四、安装青龙面板依赖

青龙面板脚本运行必须要安装的依赖

一键依赖
docker exec -it qinglong bash
## 安装青龙依赖,如果按上面的安装青龙容器脚本,此处要把qinglong改成QL.
curl -fsSL https://ghproxy.com/https://raw.githubusercontent.com/FlechazoPh/QLDependency/main/Shell/QLOneKeyDependency.sh | sh

四、消息推送(可选)

在每次执行完我们需要一个推送来告诉我们今天获取了多少京豆,以及cookies有没有过期。我们在面板的配置文件项的第44行找到server酱并填入SendKey并保存即可。

目前Server酱使用门槛变高,改用钉钉机器人是一个比较好的选择,具体步骤可参考这篇文章:青龙面板 消息推送功能设置之钉钉机器人消息推送! – 孤岛 (feiji.work)

五、总结

这是一个非常好的服务器回血项目,即使在配置和搭建上比较复杂,但是收益还是相当可观的,配置得当你甚至在收回本金后还能赚不少钱。

其它补充内容可参考:搭建青龙面板运行京东、B站脚本 – 登山亦有道 (chenyan98.cn),目前发表原文的站点无法访问,看seo关键词估计是被请去喝茶了,。

其它参考链接

青龙面板自动领京东京豆,做农场浇水、萌宠、工厂、种豆等任务-缙哥哥 (dujin.org)

青龙面板拉取常用脚本(JD签到)目前在维护的脚本更新(2021-10-04)

https://blog.csdn.net/m0_61705773?type=blog

其它用法

多个网站签到

bilibili bili说明

快手,养牛,开卡

项目

金银手指

Linux的ip命令-路由-网卡设备-统计

Linux的ip命令和ifconfig类似,但前者功能更强大,并旨在取代后者。使用ip命令,只需一个命令,你就能很轻松地执行一些网络管理任务。ifconfig是net-tools中已被废弃使用的一个命令,许多年前就已经没有维护了。Linux系统提供iproute2工具用于替代一些常用的net-tools命令,iproute2套件里提供了许多增强功能的命令,ip命令即是其中之一。

格式:

ip [options] object [command [arguments]]

主要参数
OPTIONS是修改ip行为或改变其输出的选项。所有的选项都是以-字符开头,分为长、短两种形式。如link、addr、route、rule、tunnel 。
object是要管理者获取信息的对象。如网络接口类型eth0。
command设置针对指定对象执行的操作,它和对象的类型有关。一般情况下,ip支持对象的增加(add)、删除(delete)和展示(show或list)。有些对象不支持这些操作,或者有其它的一些命令。对于所有的对象,用户可以使用help命令获得帮助。这个命令会列出这个对象支持的命令和参数的语法。如果没有指定对象的操作命令,ip会使用默认的命令。一般情况下,默认命令是list,如果对象不能列出,就会执行help命令。
arguments是命令的一些参数,它们倚赖于对象和命令。ip支持两种类型的参数:flag和parameter。flag由一个关键词组成;parameter由一个关键词加一个数值组成。为了方便,每个命令都有一个可以忽略的默认参数。例如,参数dev是ip link命令的默认参数,因此ip link ls eth0等于ip link ls dev eth0。命令的默认参数将使用default标出。

  1. IP地址管理
    设置和删除Ip地址
    设置一个IP地址,可以使用下列ip命令:
    ip addr add 192.168.0.193/24 dev wlan0
    请注意IP地址要有一个后缀,比如/24。这种用法用于在无类域内路由选择(CIDR)中来显示所用的子网掩码。在这个例子中,子网掩码是255.255.255.0。

需要查看是否已经生效。
ip addr show wlan0
删除IP地址
ip addr del 192.168.0.193/24 dev wlan0

  1. 路由管理
    列出路由表条目
    IP命令的路由对象的参数还可以帮助你查看网络中的路由数据,并设置你的路由表。第一个条目是默认的路由条目,你可以随意改动它。
    ip route show
    查看路由表
    假设现在你有一个IP地址,你需要知道路由包从哪里来。可以使用下面的路由选项(译注:列出了路由所使用的接口等):

ip route get 119.75.216.20
查看路由包
添加默认路由
ip route add default via 192.168.202.254
添加网络路由
ip route add 192.168.4.0/24 via 192.168.4.1
修改网络路由
ip route change 192.168.4.0/24 dev eth1
设置NAT路由
ip route add nat 192.168.1.100 via 192.168.1.1
1.
查看某个路由表信息
ip route show table main
ip route show table local
ip route show table all

可以使用以下方式获取到特定ip的路由信息:

bob@ubuntu-20-04:~$ ip route get to 192.168.43.2


擦除所有路由表

ip route flush

擦除路由表的缓存

ip route flush cache

  1. 网络统计
    显示网络统计数据
    使用ip命令还可以显示不同网络接口的统计数据。
    ip -s link
    网络统计数据
    当你需要获取一个特定网络接口的信息时,在网络接口名字后面添加选项ls即可。使用多个选项-s会给你这个特定接口更详细的信息。特别是在排除网络连接故障时,这会非常有用。

ip -s -s link ls docker0

ip -s link ls docker0

  1. ARP管理
    查看ARP信息
    地址解析协议(ARP)用于将一个IP地址转换成它对应的物理地址,也就是通常所说的MAC地址。使用ip命令的neigh或者neighbour选项,你可以查看接入你所在的局域网的设备的MAC地址。
    ip neighbour
  2. 网络监测
    监控netlink消息
    可以使用ip命令查看netlink消息。monitor选项允许你查看网络设备的状态。比如,所在局域网的一台电脑根据它的状态可以被分类成REACHABLE或者STALE。使用下面的命令:
    ip monitor all
  3. 网络接口设置
    激活和停止网络接口
    你可以使用ip命令的up和down选项来激某个特定的接口,就像ifconfig的用法一样。

停止网络接口eth0

ip link set eth0 down

启动网络接口eth0

ip link set eth0 up
修改设置传输队列的长度
ip link set dev eth0 txqueuelen 100

ip link set dev eth0 txqlen 100
修改网络设置MTU(最大传输单元)的值
ip link set dev eth0 mtu 1500
修改网卡的MAC地址
ip link set dev eth0 address 00:01:4f:00:15:f1

  1. 路由策略设置
    ip rule命令中包含add、delete、show(或者list)等子命令,注意:策略路由(policy routing)不等于路由策略(rouing policy)。在某些情况下,我们不只是需要通过数据包的目的地址决定路由,可能还需要通过其他一些域:源地址、IP协议、传输层端口甚至数据包的负载。这就叫做:策略路由(policy routing)。

插入新的规则

ip rule add

删除规则

ip rule delete

显示路由表信息

ip rule list

子命令可以用如下缩写:add、a;delete、del、d

示例1: : 双网卡数据路由策略选择,让来自192.168.3.0/24的数据包走11.0.0.254这个网关,来自192.168.4.0/24的数据包走12.0.0.254这个网关

定义表
echo 10 clinet_cnc >>/etc/iproute2/rt_tables
echo 20 clinet_tel >>/etc/iproute2/rt_tables
把规则放入表中
ip rule add from 192.168.3.0/24 table clinet_cnc
ip rule add from 192.168.4.0/24 table clinet_tel
添加策略路由
ip route add default via 11.0.0.254 table clinet_cnc
ip route add default via 12.0.0.254 table clinet_tel
刷新路由表

ip route flush cache

来自51CTO博客作者计算机控制挖掘机炒菜?的原创作品

linux命令

docker ps命令用来展示所有运行中的容器

docker ps -a命令是用来展示所有的容器,包括未运行的容器

curl 是常用的命令行工具,用来请求 Web 服务器,它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具,

不带有任何参数时,curl 就是发出 GET 请求。


$ curl https://www.example.com

上面命令向www.example.com发出 GET 请求,服务器返回的内容会在命令行输出。
#curl cip.cc 查询IP地址归属地

参考:https://www.ruanyifeng.com/blog/2019/09/curl-reference.html

ps

ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

grep

命令用于查找文件里符合条件的字符串。

grep 指令用于查找内容包含指定的范本样式的文件,如果发现某文件的内容符合所指定的范本样式,预设 grep 指令会把含有范本样式的那一列显示出来。若不指定任何文件名称,或是所给予的文件名为 -,则 grep 指令会从标准输入设备读取数据。

grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。

 ps -ef |grep

通过上述解释,可以得知ps是一个命令,grep是一个命令,中间的|代表管道命令,表示ps命令和grep命令同时执行

示范

ps -ef |grep python 这条命令代表检查python进程是否存在

显示列字段解释
  • UID      :程序被该 UID 所拥有
  • PID      :就是这个程序的 ID 
  • PPID    :则是其上级父程序的ID
  • C          :CPU使用的资源百分比
  • STIME :系统启动时间
  • TTY     :登入者的终端机位置
  • TIME   :使用掉的CPU时间。
  • CMD   :所下达的是什么指令

nload -m

查看所有网卡实时流量情况,-m参数表示不以图表,而以统计数据显示

du -sh 查看当前目录使用情况

du -sh * 查看当前目录下子目录使用情况,可以直接把*号变目录名来查目录空间使用情况

du -sh /*  表示根目录使用情况

df -ah df列出磁盘总容量、可用容量、使用%、接入点等信息,而du只是合计磁盘的使用量。-h选项表示人性化显示格式。

tail Linux中用于查看文件尾部的内容,与head相对应。
常用来查看日志文件,通过-f实时查看文件最新内容。

尤其是对于日志文件较大的时候,通过tail指定输出的行数来查看日志。

// 输出最后10行的内容
tail test.log

// 输出最后10行的内容,同时监视文件的变化,一旦变化就显示出来
tail -f test.log

// 输出最后n行的内容,同时监视文件的变化,一旦变化就显示出来
tail -nf test.log

// 输出文件最后10行的内容
tail -n 10 filename
// 除第9行不显示外,显示第10行到末尾行
tail -n -10 filename

// 从第20行至末尾
tail +20 test.log

// 显示最后10个字符
tail -c 10 test.log

// 实时日志查看与grep过滤关键字
// -A 除显示符合t匹配内容的那一行之外,并显示该行之后的内容
// -B 除显示符合匹配内容的那一行之外,并显示该行之前的内容
// -C 除显示符合匹配内容的那一列之外,并显示该列前后的内容
tail -f test.log | grep ‘test’ -C 5
tail -f test.log | grep ‘test’ -5