我拿树莓派做了什么

Author Avatar
purefkh 5月 19, 2019
  • 在其它设备中阅读本文章

入手树莓派一年整一年了,那么我拿树莓派做了些什么呢?吃灰

一、开机自动发送内网IP至邮箱

这一内容有些偏题,但确是后面内容的基础,所以便写了。

其实实现方案很简单,开机自启→检查网络连通性→获取内网ip地址→发送至指定邮箱。

『1』先从发送邮件开始

我们使用 muttmsmtp 来做这些工作。

sudo apt install msmtp mutt

/root 目录下创建 .msmtprc 文件:

account default
host smtp.xxx.com
from xxx@xxx.com
auth plain
user xxx@xxx.com
password xxx
logfile /root/msmtp.log
  • 一定注意,是在 /root 下建立配置文件,因为开机启动时脚本的执行用户是root
  • 提前创建好log文件,否则会有错误发生 msmtp: cannot log to /root/.log/msmtp.log: cannot open: 没有那个文件或目录
  • 163邮箱需要使用客户端授权码登录

接下来配置 mutt,同理创建 .muttrc 文件:

set crypt_use_gpgme = no
set sendmail="/usr/bin/msmtp"
set use_from=yes
set realname="Raspberry"
set editor="vim"

一切配置OK,我们来做一个测试

echo "null" | mutt -s "hello" xxx@xxx.com

很快,我收到了来自树莓派的问候。

『2』获取内网IP

很意外的,从 /etc/rc.local 文件中发现了这样一段话:

# Print the IP address
_IP=$(hostname -I) || true
if [ "$_IP" ]; then
  printf "My IP address is %s\n" "$_IP"
fi

不妨来试一下 hostname -I

$ hostname -I
192.168.1.171 192.168.1.178

一个是我的有线IP,另一个是无线IP

但我并没有用这种方法,选择了 ifconfig 命令:

$ ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,1)}'
192.168.1.171
$ ifconfig wlan0 | sed -n "2,2p" | awk '{print substr($2,1)}'
192.168.1.178

『3』脚本实现

#!/bin/bash

# network checking
while true
do
  sleep 5s
  ping -c 1 baidu.com > /dev/null 2>&1
  if [ $? -eq 0 ]
  then
    echo "Network OK, send email..."
    break
  else
    echo "Network not ready, wait..."
  fi
done

# get the IP address
ETH0_IP_ADDR=`ifconfig eth0 | sed -n "2,2p" | awk '{print substr($2,1)}'`
WLAN0_IP_ADDR=`ifconfig wlan0 | sed -n "2,2p" | awk '{print substr($2,1)}'`

# send the Email
echo "
Current time: `date '+%F %T'`.

Enjoy!" | mutt -s "IP Address of Raspberry: (ETH0)$ETH0_IP_ADDR (WLAN0)$WLAN0_IP_ADDR " xxx@xxx.com

『4』开机自启

/etc/rc.local 文件中加入 sh /root/WhatIsMyIp.sh >> /root/WhatIsMyIp.log 2>&1 即可。

重启测试。

二、Transmission下载机

参考自 ArchWiki

『1』Transmission安装及配置

安装cli和进程守护程序:sudo apt install transmission-cli transmission-daemon

设置web界面:

transmission-daemon -t -u arch -v linux -p 9091 -a "127.0.0.1"

之后便可以通过 http://树莓派ip:9091 访问web界面。

  • 修改配置文件 ~/.config/transmission-daemon/settings.json 后,需要使用 killall -HUP transmission-daemon 应用配置。
  • 如果想用一个文本编辑器手动编辑配置文件,请先停止守护程序;否则当它停止时将会覆盖配置文件。

『2』搭建SMB

为了方便用电脑或者手机直接看树莓派中的视频,搭建了samba。

首先安装:

sudo apt install samba samba-common-bin

修改 /etc/samba/smb.conf 配置文件,在文件末尾添加:

[public]
   comment = public storage
   path = /home/pi/public
   valid users = pi
   read only = no
   create mask = 0777
   directory mask = 0777
   guest ok = no
   browseable = yes

valid users,即 pi 为有效用户,将其添加到 Samba 中:

sudo smbpasswd -a pi

创建密码后,重启 samba 使配置生效:

sudo samba restart

最后设置权限:

sudo chmod -R 777 ~/public

三、UnblockNeteaseMusic

解锁网易云音乐客户端变灰歌曲,项目来自 UnblockNeteaseMusic

git clone https://github.com/nondanee/UnblockNeteaseMusic.git
cd ~/UnblockNeteaseMusic
nohup node app.js -p 65535 -f 59.111.181.35 > proxy.log 2>&1 &

但是退出shell时,进程就会被kill掉,查了一下我们可以使用 screen 命令来守护进程。

首先新建一个名为music的screen:

screen -S music

然后运行该项目,按下 Ctrl A,然后按 D,终端上方出现 [detached from 2023.music],即挂起。

  • 其他常用命令:

    1. 列出所有Screen

      $ screen -ls
      There is a screen on:
              1863.music      (2019年05月19日 12时59分49秒)   (Detached)
      1 Socket in /run/screen/S-pi.
      
    2. 杀掉某个Screen

      $ screen -X -S 1863 quit
      

搭建成功后,在客户端中设置代理

点击确定,重启后看一下效果


暂时就只有这些了。有时间更。