樹莓派B製作下載器
手頭有一隻樹莓派B+,用來跑圖形介面的Raspbian感覺太慢了,恰好手頭還有一塊膝上型電腦硬碟,打造了一款下載器。
主要功能:無人值守下載,可通過SSH或FTP新增下載任務,通過FTP獲取下載檔案。
硬體:樹莓派B+ 1只、SD卡1片(我用的512M)、筆記本硬碟1塊、USB行動硬碟電路板1片,USB線2條、USB無線網絡卡1只、5V 2.5A手機充電頭1只。
軟體:Raspbian磁碟檔案,因為樹莓派型號原因,選用的是 2016-09-23-raspbian-jessie-lite.img。太新的版本可能不能正常支援樹莓派B+,且不容易實現硬碟安裝作業系統。作業系統安裝到SD卡,長時間使用SD卡容易頻繁讀寫損壞。
燒錄Raspbian系統:
(1)將SD卡用讀卡器連線到執行Lubuntu作業系統的電腦,命令列執行 sudo dd if=/.../2016-09-23-raspbian-jessie-lite.img of=/dev/sdx 其中if輸入檔案路徑按照img檔案具體存放路徑設定,of輸出位置按照系統識別的SD卡名稱設定,具體可通過Lubuntu作業系統自帶的“磁碟”或者“GPARTED”檢視。等待寫入結束。
(2)退出SD卡,重新連線至電腦,掛載SD卡boot分割槽,修改boot分割槽下cmdline.txt檔案中 root=/dev/mmc0blk1 為 root=/dev/sda2。在boot分割槽用命令列執行 touch ssh,建立一個名為ssh的空白檔案,使樹莓派上電自動開啟ssh服務,以便通過網路遠端連線和控制。
(3)按照(1)的方法,將2016-09-23-raspbian-jessie-lite.img寫入筆記本硬碟。等待寫入完成。
(4)解除安裝硬碟,重新連線至電腦。
(5)用Lubuntu下GPARTED軟體將硬碟擴充套件至利用所有剩餘空間。
(6)擴充後,要用gparted檢查硬碟的第二個分割槽,使ext4檔案系統完整。
(7)在/etc/wpa_supplicant/wpa_supplicant.conf尾部新增wifi熱點資訊,實現樹莓派上電自動連線wifi網路:
network={
ssid="wifi名稱"
psk="wifi密碼"
}
硬體搭建:
(1) 1條USB線去掉小頭,將電源線按照正負極焊接到USB行動硬碟電路板,用於給硬碟和樹莓派供電。該USB線另一端連線手機充電頭。
(2)另1條USB線連線USB行動硬碟電路板和樹莓派USB口。
(3)將SD卡插入樹莓派SD卡插槽。
準備工作:
採用手機作為wifi熱點,開啟手機網路連線和WLAN熱點功能。
執行並用個人電腦連線樹莓派:
手機充電頭接入交流電源,樹莓派加電啟動。
檢視手機上連線至熱點裝置,樹莓派連線到手機WLAN熱點後,可以在手機上看到接入裝置數量的變化,並可以檢視樹莓派的IP地址。
個人電腦也連線至手機的WLAN熱點。
在個人電腦上執行終端,終端內執行 ssh [email protected],這裡的網路地址為樹莓派的IP地址。
樹莓派初始登入密碼為 raspberry
樹莓派系統升級及安裝功能軟體:
(1)修改軟體源,便於加快升級速度
修改/etc/apt/sources.list檔案,將 deb 開頭的行修改為國內源的地址,我用的中科大映象源
deb http://mirrors.ustc.edu.cn/raspbian/raspbian/ jessie ...(最後一個/後的內容不變)
(2)執行 sudo apt-get update --fix-missing
(3)執行 sudo apt-get upgrade
(4)執行 sudo apt-get install ftpd 安裝並開啟樹莓派的ftp服務
(5)執行 sudo apt-get install python3
(6)執行 sudo apt-get install aria2 安裝aria2下載軟體
(7)執行 sudo apt-get install vi 安裝vi編輯器
樹莓派新增python指令碼
(1) /home/pi 下 建立 downloader.py,檔案中新增如下程式碼:
import os
import time
import addtask
log_file_name = '/home/pi/downloader.log'
url_file_name = '/home/pi/url.txt'
save_path = '/home/pi/downloads'
retry_max_times = 10
sleep_time = 10
def append_log(log_string, log_file=log_file_name, log_max_len=1024*1024):
os.system('touch %s'%log_file)
if os.path.getsize(log_file) > log_max_len:
os.system('rm ' + log_file)
os.system('touch %s'%log_file)
try:
f = open(log_file, 'a')
if len(log_string) < 10:
log = '%s %s\n'%(time.asctime(), log_string)
else:
log = '\n%s\n %s\n'%(time.asctime(), log_string)
f.write(log)
f.close()
except:
pass
return
def save_contents(contents, file_name):
try:
f = open(file_name, 'w')
contents = contents.rstrip() + '\n'
f.write(contents)
f.close()
except:
pass
return
def pick_first_task(task_file_name):
try:
f = open(task_file_name)
task = f.readline()
task = task.strip()
f.close()
except:
task = ''
return task
def remove_first_task(task_file_name):
try:
f = open(task_file_name)
first_task = f.readline()
remain = f.read()
f.close()
save_contents(remain, task_file_name)
except:
pass
return
def make_command(task, save_path='/home/pi/downloads'):
dest_file_name = task[task.rfind('//') + 1:]
command = 'aria2c %s --dir=%s --index-out=1=%s'\
%(task, save_path, dest_file_name)
return command
def process_task(task, save_path='home/pi/downloads'):
try:
os.system('mkdir %s'%save_path)
except:
pass
command = make_command(task, save_path)
return os.system(command)
def work_loop(task_file_name, save_path='/home/pi/downloads'):
while True:
task = pick_first_task(task_file_name)
if task != '':
retry_count = 0
while True:
append_log('DOWNLOAD (try %s): %s'%(retry_count,task))
if process_task(task, save_path) == 0:
# a successful download returns 0, otherwise non zero.
remove_first_task(task_file_name)
append_log('Finish.')
break
else:
retry_count += 1
if retry_count > retry_max_times:
remove_first_task(task_file_name)
addtask.add_task(task, task_file_name)
append_log('Retry max times, move first to last.')
break
time.sleep(sleep_time)
else:
remove_first_task(task_file_name)
# keep the upper line to skip empty lines in task file url.txt
append_log('Empty Task.')
time.sleep(sleep_time)
if __name__ == '__main__':
work_loop(url_file_name, '/home/pi/downloads')
(2) /home/pi 下建立 addtask.py,檔案中新增如下程式碼
import os
import sys
task_file_name = '/home/pi/url.txt'
def add_task(task, task_file=task_file_name):
print('Add Task :', task, end='---> ')
try:
os.system('touch ' + task_file)
f = open(task_file, 'a')
f.write(task + '\n')
f.close()
print('Success.\n')
except:
print('Failed.\n')
return
def interactive_add_task(task_file=task_file_name):
while True:
url = input("URL to download('q' to quit): ")
if url.upper() == 'Q':
break
if len(url) < 5:
print('URL may be incorrect, ignored:', url, '\n')
else:
add_task(url, task_file)
return
if __name__ == '__main__':
if len(sys.argv) == 1:
interactive_add_task()
else:
for n in range(1, len(sys.argv)):
add_task(sys.argv[n])
(3) /etc/rc.local 檔案在 exit 0 所在行前新增 python3 /home/pi/downloader.py > /dev/null &
(4) /home/pi 下建立 url.txt空白檔案
(5)執行 sudo reboot -h 0 重啟樹莓派
新增下載任務
ssh遠端連線樹莓派,
方法1:執行 python3 addtask.py http://資源網路地址 逐個新增下載任務
方法2:執行 python3 addtask.py 互動式新增下載任務
方法3:在個人電腦上編輯一份url.txt的檔案,每行1個要下載資源的網路連結,儲存後用ftp傳輸至樹莓派/home/pi下。
檢視任務進度:
樹莓派/home/pi下的downloader.log儲存了下載日誌。
檢視未完成下載任務:
樹莓派 /home/pi 下的 url.txt 儲存的是尚未完成下載的任務
完成下載資源的獲取:
下載的資源保存於樹莓派/home/pi/downloads路徑下,可以通過ftp訪問並複製到個人電腦。
當前方式下載資原始檔的所有者為root,使用時如果需要修改所有者,用 chown 命令操作。
相關推薦
樹莓派B製作下載器
手頭有一隻樹莓派B+,用來跑圖形介面的Raspbian感覺太慢了,恰好手頭還有一塊膝上型電腦硬碟,打造了一款下載器。 主要功能:無人值守下載,可通過SSH或FTP新增下載任務,通過FTP獲取下載檔案。 硬體:樹莓派B+ 1只、SD卡1片(我用的512M)、筆記本硬碟1塊、
樹莓派做BT下載器:transmission
1.掛載樹莓派 因為樹莓派的SD一般最大也就128G,不適合做BT的儲存器,一般選擇外接一個行動硬碟。 注意:行動硬碟的供電一般需要5V2A,而樹莓派自己的供電也只有5V2.5A,直接把行動硬碟接在樹莓派上會導致硬碟供電不足,無法啟動,因此我們需要一個可接電源的USB HUB,淘寶一個3
樹莓派之BT下載器實現
本文介紹用樹莓派搭建BT下載器的一種方法,可以讓樹莓派實現自動下載。 配置環境 首先安裝transmission: sudo apt-get install transmission-daemon 然後建立下載目錄,一個是下載完成的目錄
樹莓派搭建WEB服務器
.org 官網 登陸 doc all update 插件 root date 樹莓派搭建WEB的教程網上有許多,但感覺每一篇都有一些問題,這次我將網上的教程匯總,並親身實踐,將註意的問題都寫進去,方便新手學習! 目錄:1,安裝nginx+sqlite+php5打造輕量級服
樹莓派搭建bt下載機、即是安裝transmission
lse 文件中 vim bin hive max rename archive req Transmission是一種BitTorrent客戶端, 安裝:sudo apt-get install transmission-daemon 給用戶授權:sudo usermod
樹莓派映象製作
還沒做好的指令碼: #!/bin/bash #create image echo "Creating Image ..." BOOT_DEV='/dev/sdb1' ROOT_DEV='/dev/sdb2' TIME=`date "+%Y%m%d%H%M%S"` FILE=backup_201812
樹莓派:文字編輯器與檔案
ALL.nanorc go.nanorc markdown.nanorc ruby.nanorc awk.nanorc html.nanorc mpdconf.nanorc sed.nanorc c.nanorc
樹莓派Win10映象下載安裝教程及使用初體驗
一、WIN7下刷映象的方法: 官網推薦在Win10下刷(http://ms-iot.github.io/content/win10/SetupRPI.htm),我只能說呵呵了,為了個不穩定的系統裝個Win10,下面來講一下Win7下的安裝方法。 因為Wi
樹莓派實現一個下載機
這回又買了一塊樹莓派,這次用的是B+。樹莓派做BT下載器的特性就是省電啊。 原來想買一個路由器刷openwrt,後來覺得路由器可能效能有限,而且稍有不慎會刷壞uboot,所以暫且不考慮了。 搭建過程網上都有,但是很零碎,這裡整理一下步驟,下面分為幾個步驟吧: 準備工
樹莓派raspbian資源下載
今天找資源下了一天,找不到跟GPIO硬體比較合適的作業系統,之後今天下午重武裝好了系統,太麻煩了。。。 1.4G左右 格式化U盤:FormatTool 解壓安裝img:Win32DiskImager-
樹莓派+PyQt製作魔鏡
前段時間在GitHub瞎看,看到一個超炫酷的專案MagicMirror(專案地址),下面附上兩張國外大神做的鏡子。 然後就感覺超級帥氣,樹莓派啥的買來以後在上面跑了一遍MagicMirror的原始碼,然後看到可以擴充套件好多好玩的東西,後來發現這個專案
OpenNI在樹莓派B+和樹莓派2的移植
準備工作 更新和安裝支援庫 sudo apt-get update sudo apt-get install git g++ python libusb-1.0-0-dev freeglut3-dev openjdk-6-jdk doxygen graphviz
(14)樹莓派B+使用L298N驅動控制四驅車並實現一個簡單的web控制端
在系列文章第12篇中提到了L298N,它是H橋雙路直流電機驅動,可以使雙路直流電機實現正轉或者反轉,並且通過ENDA和ENDB輸入PWM訊號,還可以實現加減速。本文用2塊L298N驅動板成功驅動了4個直流電機,實現了4輪同時向前、向後以及前向左轉、前向右轉甚至是後向左轉和後
Linux(樹莓派b+)學習~putty遠端登入
硬體條件:樹莓派b+主機板,8G sd卡,網線,滑鼠+鍵盤,LCD微雪7寸顯示器,膝上型電腦,電源線 軟體工具:Putty 想要用Putty遠端登入樹莓派不是那麼複雜,由於沒有無線網絡卡本文使用LCD顯示器手動配置靜態ip後通過網線直連膝上型電腦網絡卡,不能達到遠端登入x-
(13)樹莓派B+ 讀取DHT11溫度溼度模組的數值
溫度溼度模組看起來簡單,只有三個引腳(實際4個介面),但仔細一想,3個引腳分別作為VCC、GND、DATA用處的話,因為傳給樹莓派GPIO的只有高電平、低電平,那麼怎麼來讀取整型的溫度數字和溼度數字呢?這麼一想,並不簡單!反而是因為引腳少,它需要高低變化的時序訊號來表達數值
樹莓派部署BT下載機
made by Rk 本文由浙江大學《嵌入式系統》課程提供強力支援。 /*************************************************************/ 要求:做一個BT下載機,能下載BT和emule的資源,要有遠端控制
樹莓派3B製作無線wifi(AP with hostapd)
參考:https://frillip.com/using-your-raspberry-pi-3-as-a-wifi-access-point-with-hostapd/這是一款新型的樹莓派,並且自帶wifi模組,不用大家自己另購,很是方便。網上寫樹莓派做wifi的文件不少但
樹莓派做下載服務器 aria2 篇
後臺運行 path 修改 nano 並且 安裝 *** 接下來 下載 一開始要運行一下配置,擴大樹莓派的根目錄的空間,不然所有軟件裝完之後空間會只剩幾百兆。 sudo raspi-config 擴展根目錄空間, 開啟 SSH ,修改 pi 密碼。 另外要提
簡單物聯網:外網訪問內網路由器下樹莓派Flask服務器
分配 amp con 樹莓派 轉發規則 添加 局域網 輸入 pytho 最近做一個小東西,大概過程就是想在教室,宿舍控制實驗室的一些設備。 已經在樹莓上搭了一個輕量的flask服務器(在樹莓派下搭flask在其他隨筆有說明),在實驗室的路由器下,任何設備都是可以訪問的;但是
利用樹莓派3b搭建git代碼服務器
git bash 根據 remote windows print pos ssh 服務 system 在樹莓派上3b的操作,可以利用ssh進行登陸操作: 添加一個”Git”用戶和組 增加git用戶和組 adduser --system --shell /bin/ba