基础操作


树莓派无屏幕连接

  1. ssh连接ip
  2. sudo raspi-config开启vnc服务
  3. 登陆提示无屏幕
  4. ssh连接进入设置,改变分辨率大小,重启
  5. vnc连接,显示不完全
    1
    2
    3
    4
    5
    cd ~/.config/lxpanel/LXDE-pi/panels

    curl -O https://gist.githubusercontent.com/ColinNg/9ed317308a9a0f75824f828e75c8469c/raw/a72176416201a0e6ebbce30608e6f7eceb379e0e/panel

    sudo reboot

修正时间

开启ssh

boot目录下创建ssh文件,默认ssh账户pi密码为raspberry

  • 修改pi用户的ssh密码:sudo passwd pi

配置Wifi连接及网络

使用nano修改/etc/wpa_supplicant/wpa_supplicant.conf文件,仿照原配置继续写

1
2
3
4
sudo   iwlist wlan0  scan --扫描周围wifi


sudo nano /etc/wpa_supplicant/wpa_supplicant.conf

例如配置,其中priority=5值越高等级越高,优先连接权更高

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CN

network={
ssid="Three-Body"
psk="qwertyuiop"
priority=5
}

network={
ssid="360 N7 Lite"
psk="zxcvbnml"
priority=2
}

network={
ssid="SXYYC"
key_mgmt=NONE
priority=1
}

  • 首次烧录镜像的话,在boot目录下创建wpa_supplicant.conf即可

定时执行任务

1
2
crontab -e 编辑命令,首次选择nano
crontab -l 查看任务

取消了秒

P.

1
*/1 * * * *  python3 /home/pi/nrhs_pi/pi_py/ip.py 每分钟执行一次py脚本

仪表盘安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
sudo apt-get install nginx php7.4-fpm php7.4-cli php7.4-curl php7.4-gd php7.4-cgi

# 由于教程过时,在2022年应该使用php7.4
# 若提示无法找到包,请换成7.3

location / {
index index.html index.htm index.php default.html default.htm default.php;
}

location ~\.php$ {
fastcgi_pass unix:/run/php/php7.4-fpm.sock;
#fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

重启nginx:sudo service nginx restart

git克隆:

1
2
3
4
5
sudo apt-get install git

cd /var/www/html

sudo git clone https://github.com/nxez/pi-dashboard.git

重新安装chromium浏览器

1
2
3
4
5
sudo apt update/sudo apt full-upgrade 升级与完整包升级

sudo apt install chromium-browser -y 安装chromium-browser

chromium-browser 启动

ftp服务安装

1
2
3
4
5
sudo apt-get install vsftpd   安装vstfpd

sudo service vsftpd start 启动服务

sudo nano /etc/vsftpd.conf 编辑vsftdp的配置文件

编辑:

1
2
3
4
5
6
7
anonymous_enable=NO  不允许匿名访问

local_enable=YES 设定本地用户可以访问。

write_enable=YES 设定可以进行写操作

local_umask=022 设定上传后文件的权限掩码。

重启:

1
sudo service vsftpd restart

上传文件名包含中文时可能会乱码,在linux下无法正常显示。这是因为windows文件名默认GBK编码,而linux是UTF—8。

1
2
3
sudo apt-get install convmv -y   --安装convmv文件转码工具

convmv -f gbk -t utf-8 -r --notest /home/要操作的文件或者文件夹

转码完成即解决

文件夹及文件操作

移动复制删除文件夹

1
2
3
4
5
6
7
8
9
sudo mv FMmp3 /home/pi/nrhs_pi/pi_web/	将当前目录下的FMmp3移动到指定目录

sudo mv /usr/xu/* . 将/usr/xu中的所有文件移到当前目录(.表示当前)

sudo cp dir1/a.doc dir2 表示将dir1下的a.doc文件复制到dir2目录下

sudo rm -rf mp3 删除了当前目录下mp3文件夹,可跟目录。

sudo rm -f /var/log/httpd/access.log 强制删除/var/log/httpd/access.log文件

文件及文件夹更名:

1
sudo mv FMmp3 mp3 将FMmp3改名为mp3

权限设置

1
2
chmod 777 folder_path

修改密码

1
2
3
4
sudo passwd pi                   #修改 pi 密码  
sudo passwd root #设置 root 密码
su root #切换到 root 用户
su pi #切换到 pi 用户

find寻找

1
find / -iname "sshd_config" # 寻找文件夹

时间设置

调整时区

1
2
3
4
5
6
7
8
9
sudo dpkg-reconfigure tzdata 打开设置

选择Asia亚洲shanghai时间

sudo ntpd -s -d 矫正时间

//sudo date --s="2017-07-25 10:43:00" 强制设置时间

date 显示时间

更换源

编辑/etc/apt/sources.list文件

1
2
3
4
5
6
sudo nano /etc/apt/sources.list

注释原来源,换为清华大学源

deb http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib
deb-src http://mirrors.tuna.tsinghua.edu.cn/raspbian/raspbian/ buster main non-free contrib

编辑/etc/apt/sources.list.d/raspi.list文件

1
2
3
4
5
sudo nano /etc/apt/sources.list.d/raspi.list

注释原来源,换为清华大学源

deb http://mirrors.tuna.tsinghua.edu.cn/raspberrypi/ buster main ui

更新软件库及依赖

1
2
3
4
sudo apt-get update --更新软件源
apt list --upgradable --更新了哪些内容

sudo apt upgrade --升级所有软件,时间漫长,慎重

开启及关闭GUI

1
2
3
4
5
sudo raspi-config # 打开设置

boot options # boot设置

# 选择console Autologin Text console

进阶应用

由于树莓派内存较小,mysql有点大,我的学习资料都跑不起来了。

安装SQLite

一般来讲,Linux一般已内置SQLite
示例教程

检查”SQLite3

未安装

1
2
3
sudo apt-get update

sudo apt install sqlite3

启动

命令行下SQLite3会出现版本号和sql命令行

创建数据库

1
2
3
4
5
6
7
8
9
sqlite3 SQLite-name.db		在外命令行下直接创建

sqlite>.open SQLite-name.db SQLite命令行下创建,标识为(sqlite>)
//.open会检查数据库时候存在,存在就打开,不存在就创建

sqlite>.databases 查看数据库列表

sqlite>.quit 退出数据库操作
//CTRL+D一样

PHP调用

请参阅PHP_SQLite菜鸟教程PHP菜鸟教程

PHP中连接数据库并遍历数据按html模板输出

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
      <?php
class MyDB extends SQLite3
{
function __construct()
{
$this->open('../pi_sql_web.db');
}
}

$db = new MyDB();
if (!$db) {
echo $db->lastErrorMsg();
} else {
//echo "Opened database successfully\n";
}

$sql = <<<EOF
SELECT * from desk_project;
EOF;

$ret = $db->query($sql);
while ($row = $ret->fetchArray(SQLITE3_ASSOC)) {
echo '<div class="shortcut" onclick="Win10.openUrl(\''.$row['url'].'\',
\'<img class=\\\'icon\\\' src=\\\''.$row['ico'].'\\\'/>终端操作\')">';
echo '<img class="icon" src="'.$row['ico'].'" />';
echo '<div class="title">'.$row['name'].'</div>';
echo '</div>';
}

?>

PHP执行一段SQL并拿到值

1
2
3
4
5
6
7
<?php
$sql = "SELECT * FROM pi_cyan ORDER BY RANDOM() limit 1;";
$ret = $db->query($sql);
while ($row = $ret->fetchArray(SQLITE3_ASSOC)) {
echo '<div class="title">'.$row['cyan'].'&nbsp;&nbsp;&nbsp;__@'.$row['name'].'</div>';
}
?>

Pytho调用

读,查数据库

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import sqlite3

conn = sqlite3.connect('----||test.db') # 应当使用绝对路径,否则不能正确读库
c = conn.cursor()
print ("数据库打开成功")

cursor = c.execute("SELECT id, name, address, salary from COMPANY")
for row in cursor:
print "ID = ", row[0]
print "NAME = ", row[1]
print "ADDRESS = ", row[2]
print "SALARY = ", row[3], "\n"

print ("数据操作成功")
conn.close()

python一键换源

1
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple

树莓派进程守护

树莓派进程守护systemd

/usr/lib/systemd/system/目录下新建service文件

1
sudo nano /usr/lib/systemd/system/alist.service

写入配置

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=alist --名称
After=network.target

[Service]
Type=simple
WorkingDirectory=path_alist --alist安装目录,下同
ExecStart=path_alist/alist-xxxx -conf data/config.json --
Restart=on-failure

[Install]
WantedBy=multi-user.target
  • 启动: systemctl start alist
  • 关闭: systemctl stop alist
  • 自启: systemctl enable alist
  • 状态: systemctl status alist
  • 重启: systemctl restart alist

screen

1
2
3
4
5
6
7
8
9
screen -S project_name  创建

screen -r project_name 进入已有的窗口

screen -ls

CTRL+A 选中 d隐藏

kill name_or_id 杀死进程

内网穿透

frp:

1
./frpc -c ./frpc.ini   启动

1.尝试破解邻居wifi—-失败5,成功1
(1).房屋内信号奇差,遂开始研究无线中继

    [1].尝试esp8266开发板中继
        1).因淘宝买到崴货失败

    [2].尝试树莓派搭建中继服务---树莓派2楼掉下干碎,维修¥15

    [3].中继搭建成功
        1).WiFi芯片功率较低而速度极慢,放弃

    [4].开始研究无线网卡作为AP中继
        1).因无线网卡芯片不支持Linux失败。。。

    [5].开始研究USB网络共享
        1).因拼多多买到崴货数据线失败

2.尝试钓鱼执法偷密码—-因技术原因失败

更新于2022.6

安装docker

首先查看树莓派是否已自带docker

1
sudo docker -v

卸载与重装

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
62
63
64
65
66
67
68
#卸载docker
sudo apt-get remove docker
sudo apt-get remove docker-engine docker.io
#卸载docker-ce
sudo apt-get remove docker-ce
#卸载安装依赖
sudo apt-get autoremove --purge docker-ce
上面的命令不会移除镜像、容器、卷或者是用户创建的配置文件,如果想卸载所有的镜像、容器、卷,可运行
rm -rf /var/lib/docker

--------------------------------------------------
首先安装依赖
sudo apt-get install apt-transport-https ca-certificates curl gnupg2 software-properties-common
信任 Docker 的 GPG 公钥
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
对于 amd64 架构的计算机,添加软件仓库

sudo add-apt-repository \
"deb [arch=amd64] https://mirrors.tuna.tsinghua.edu.cn/docker-ce/linux/ubuntu \
$(lsb_release -cs) \
stable"
最后安装
sudo apt-get update
sudo apt-get install docker-ce
把当前用户加到docker用户组中
添加docker用户组

sudo groupadd docker

把自己加到docker用户组中

#myusername 是你自己的用户名
sudo gpasswd -a myusername docker

重启docker后台服务

sudo service docker restart
切换当前用户到新group

newgrp - docker
确定docker可以非sudo运行

docker ps --查看所有项目

sudo docker run hello-world --测试docker是否成功安装

将会输出`Hello from Docker!`
--------------------------------------------------

#下载 Docker 图形化界面 portainer
sudo docker pull portainer/portainer
#创建 portainer 容器
sudo docker volume create portainer_data
#运行 portainer
sudo docker run -d -p 9000:9000 --name portainer --restart always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer

--------------------------------------------------
#重启 systemctl 守护进程
sudo systemctl daemon-reload
#设置 Docker 开机启动
sudo systemctl enable docker
#开启 Docker 服务
sudo systemctl start docker
# 重启
systemctl daemon-reload

systemctl restart docker
# sudo systemctl disable docker 取消开机自启

进入容器虚拟目录

docker container exec -it 容器id /bin/bash

部署alist

官方文档,docker安装

部分问题

apt-get安装中的E: Sub-process /usr/bin/dpkg returned an error code (1)问题

1
2
3
4
5
6
7
8
cd /var/lib/dpkg/
sudo mv info/ info_bak # 现将info文件夹更名
sudo mkdir info # 再新建一个新的info文件夹
sudo apt-get update # 更新
sudo apt-get -f install # 修复
sudo mv info/* info_bak/ # 执行完上一步操作后会在新的info文件夹下生成一些文件,现将这些文件全部移到info_bak文件夹下
sudo rm -rf info # 把自己新建的info文件夹删掉
sudo mv info_bak info # 把以前的info文件夹重新改回名