Behovet av att överföra filer via ett nätverk uppstår ofta. GNU / Linux-system stöder flera protokoll och verktyg för att göra det, varav några är utformade för något permanent fildelning (som SMB, AFP och NFS), medan andra som Secure Copy (SCP) används för snabb manuell och skriptad filöverföringar. Bland dessa är HyperText Transfer Protocol (HTTP), det mångsidiga och allestädes närvarande protokollet som World Wide Web bygger på.
Python, som ingår som standard i de flesta Linux-distributioner, tillhandahåller enkla HTTP-servrar via modulerna “SimpleHTTPServer” och “http.server”. Den förstnämnda finns i Python 2 Standard Library, medan den senare ingår i Python 3. Dessa lätta HTTP-servrar kräver ingen separat installation och kan startas direkt med ett enda kommando.
Installerar Python
Ditt system innehåller sannolikt minst en Python-version, men om så inte är fallet installerar du Python 3 med din inbyggda pakethanterare.
Till exempel på Debian och Ubuntu:
sudo apt update sudo apt install -y python3
Starta HTTP-servern
Notera IP-adressen som används av den sändande maskinen.
ip a s
Ta reda på vilken Python-version som är installerad med följande kommandon:
python --version python3 --version
Ändra din arbetskatalog på samma maskin till den som innehåller filerna du överför. Var medveten om att hela innehållet i din nuvarande arbetskatalog kan vara tillgängligt för alla i ditt nätverk (eller Internet om den sändande maskinen har en offentlig IP-adress) medan Python HTTP-servern körs.
cd /path/to/files/
Till exempel:
cd /home/user/Documents/
Du kan nu starta HTTP-servern. För Python 2.x, använd SimpleHTTPServer-modulen:
python -m SimpleHTTPServer
Eller http.server i fallet med Python 3.x:
python3 -m http.server
Båda varianterna lyssnar på port 8000 som standard, men du kan uttryckligen ange ett annat portnummer efter modulnamnet.
python -m SimpleHTTPServer [port] python3 -m http.server [port]
Notera: root-behörigheter krävs om du väljer en port under 1024.
Ladda ner dina filer
På den mottagande maskinen kan du använda vilken HTTP-klient som helst för att ladda ner dina filer. Om du använder en grafisk miljö är en webbläsare ofta bekvämare än kommandoradsverktyg. Bläddra bara till http: // IP_ADDRESS: 8000, där “IP_ADDRESS” är den avsändande datorns IP-adress och klicka på önskade filer för att ladda ner dem.
Alternativt kan du hämta dina filer med Wget eller cURL. Du bör redan ha en eller båda installerade. Om inget av det är föreslår vi att du installerar Wget, eftersom det är mer användarvänligt och stöder nedladdning av hela kataloger.
För Debian och Ubuntu:
sudo apt install wget
För RHEL och CentOS 6/7:
sudo yum install wget
För Fedora och RHEL / CentOS 8:
sudo dnf install wget
Använda Wget
För att ladda ner en enstaka fil med Wget, anropar du bara Wget följt av URL-adressen till filen du vill ladda ner.
wget http://IP_ADDRESS:8000/filename
Du kan också använda Wget för att rekursivt ladda ner hela katalogen genom att lägga till -r
kommandoradsflagga.
wget -r http://IP_ADDRESS:8000/
Använda cURL
Som standard försöker curl att skriva ut filinnehåll till din terminal. Så för att spara filen istället, ange ett filnamn med -o
flagga.
curl http://IP_ADDRESS:8000/filename -o filename
Slutsats
HTTP-funktionaliteten i Pythons standardbibliotek tillhandahåller ett grundläggande men ändå snabbt och bekvämt sätt att överföra filer, perfekt för vissa scenarier. Men kom ihåg att eftersom det här är vanlig HTTP med varken kryptering eller autentisering, bör du vara försiktig så att du inte exponerar känsliga filer.