Innehållsförteckning:

Seroma: Server Room Manager: 20 steg
Seroma: Server Room Manager: 20 steg

Video: Seroma: Server Room Manager: 20 steg

Video: Seroma: Server Room Manager: 20 steg
Video: Лесли Морган Штайнер: Почему жертвы домашнего насилия не уходят от своих мучителей 2024, November
Anonim
Seroma: Server Room Manager
Seroma: Server Room Manager

Seroma är en allt-i-ett-serverrumshanterare som tillåter användare att kontrollera status för servrarna (temperatur och luftfuktighet), åtkomstloggarna för serverrummet, samt övervaka själva serverrummet för eventuella säkerhetsöverträdelser.

Steg 1: Logga in på ditt AWS -konto

Logga in på ditt AWS -konto
Logga in på ditt AWS -konto
Logga in på ditt AWS -konto
Logga in på ditt AWS -konto
Logga in på ditt AWS -konto
Logga in på ditt AWS -konto
Logga in på ditt AWS -konto
Logga in på ditt AWS -konto
  1. För vår loggade vi in via AWS educate student gateway eftersom vi har ett student aws -konto.
  2. Gå till fliken "AWS-konto" på navigeringsmenyn längst upp till höger.
  3. Klicka på "Gå till ditt AWS Educate Starter -konto"
  4. Öppna konsolen för att komma åt din AWS Management Console.

Steg 2: Komma igång med AWS IOT "saker"

Komma igång med AWS IOT
Komma igång med AWS IOT
Komma igång med AWS IOT
Komma igång med AWS IOT
  1. Sök efter "AWS IoT" i sökfältet i AWS -tjänster.
  2. Klicka på "Kom igång" för att gå till AWS IoT Console -instrumentpanelen där du kan se alla IoT -enheter som är registrerade i ditt AWS -konto.

Steg 3: Registrera en AWS IOT "sak"

Registrera en AWS IOT
Registrera en AWS IOT
Registrera en AWS IOT
Registrera en AWS IOT
Registrera en AWS IOT
Registrera en AWS IOT
  1. Navigera i navigeringsfältet för att hantera dina IoT -saker.
  2. Klicka på "Registrera en sak" om du inte har något ännu. (Om du redan har en sak klickar du på "Skapa" -knappen längst upp till höger på skärmen bredvid sökfliken.)
  3. Klicka på den första knappen "Skapa en enda sak".
  4. Skriv "RaspberryPi" som namnet på saken. För detta steg krävs ingen annan inmatning än "Namn". Klicka sedan på nästa.

Steg 4: Aktivering av ett certifikat

Aktivera ett certifikat
Aktivera ett certifikat
Aktivera ett certifikat
Aktivera ett certifikat
  1. I nästa steg klickar du på knappen "skapa certifikat".
  2. Ladda ner och spara de fyra nedladdningslänkarna på nästa sida i en fungerande katalog eller mapp. För att spara rot-CA-filen, högerklicka och spara som.
  3. Klicka på "Aktivera" så visas ett framgångsmeddelande.
  4. Använd vänliga namn för filerna genom att ta bort siffrorna framför varje filnamn och byta namn på rot -CA -filen till "rootca.pem".
  5. Klicka på "Bifoga en policy" för att fortsätta.

Steg 5: Lägga till en policy i ditt certifikat

Lägga till en policy i ditt certifikat
Lägga till en policy i ditt certifikat
Lägga till en policy i ditt certifikat
Lägga till en policy i ditt certifikat
Lägga till en policy i ditt certifikat
Lägga till en policy i ditt certifikat
  1. På nästa sida, om du inte har en policy, kommer de att uppmana dig att göra en på knappen "Skapa en policy".
  2. Om du redan har en befintlig policy klickar du på knappen "Skapa ny policy" nedan.
  3. Infoga följande information i formuläret för att skapa policy.

    Namn: RaspberryPiSecurityPolicy

    Åtgärd: iot:*

    Resurs ARN: *

    Effekt: Tillåt

  4. Din policy bör sedan visas på fliken "Policy" under "Säkerhet".
  5. Gå sedan till fliken "Certifikat" som också finns under "Säkerhet" och bifoga din policy till certifikatet du skapade tidigare.
  6. Klicka på din policy på nästa sida och klicka sedan på "Bifoga".
  7. På sidan Detaljer för det du skapade, under fliken "Interact", finns en REST API -slutpunkt som ska kopieras och sparas.
  8. AWS ska nu ha en sak som är kopplad till en policy och har ett certifikat.

Steg 6: Första konfigurationen för AWS SNS-ämne

Första konfigurationen för AWS SNS-ämne
Första konfigurationen för AWS SNS-ämne
Initial Setup för AWS SNS Topic
Initial Setup för AWS SNS Topic

SSH i Raspberry Pi och installera AWS CLI med följande pipkommando:

sudo pip installera awscli

AWS CLI innehåller kommandofullständighetsfunktionen men den är inte installerad som standard. Använd följande kommando för att installera kommandofullbordningsfunktionen på Raspberry Pi: s CLI -gränssnitt:

komplett -C aws_completer aws

Konfigurera AWS CLI med Access Key ID, Secret Access Key, AWS Region Name och Command Output format med följande kommando:

aws konfigurera

Konsolen uppmanar dig sedan att fylla i följande information:

pi@raspberrypi: ~ $ aws konfigurera

AWS Access Key ID [None]: "Sätt din användares Access Key ID här" AWS Secret Access Key [None]: "Sätt din användares hemliga Access Key här" Standardregionamn [None]: eu-central-1 Standardutmatningsformat [Inga]: json pi@raspberrypi: ~ $

Steg 7: Skapa Iot-role.trust.json-fil

Skapa Iot-role.trust.json-fil
Skapa Iot-role.trust.json-fil
Skapa Iot-role.trust.json-fil
Skapa Iot-role.trust.json-fil
  1. Skapa en JSON-fil med ovanstående IAM-policy med filnamnet iot-role.trust.json.
  2. Skapa rollen med hjälp av AWS CLI med följande kommando

aws iam create-role --role-name my-iot-role --assume-role-policy-document file: //iot-role-trust.json

Steg 8: Skapa Iot-policy.json-fil

Skapa Iot-policy.json-fil
Skapa Iot-policy.json-fil
Skapa Iot-policy.json-fil
Skapa Iot-policy.json-fil
  1. Skapa en JSON-fil med ovanstående policy med filnamnet iot-policy.json.
  2. Skapa rollpolicyn med hjälp av AWS CLI med följande kommando:

aws iam put-role-policy --role-name IoTRole --policy-name iot-policy --policy-document file: //iot-policy.json

Steg 9: Skapa ett AWS SNS -ämne (del 1)

Skapa ett AWS SNS -ämne (del 1)
Skapa ett AWS SNS -ämne (del 1)
Skapa ett AWS SNS -ämne (del 1)
Skapa ett AWS SNS -ämne (del 1)
Skapa ett AWS SNS -ämne (del 1)
Skapa ett AWS SNS -ämne (del 1)
  1. I sökfältet AWS-tjänster söker du efter "SNS" -tjänst eller går till
  2. Eftersom du inte har några ämnen nu klickar du på "Skapa nytt ämne" för att skapa ett ämne.
  3. Skriv in ditt ämnesnamn och visningsnamn och klicka på "Skapa ämne" så visas ett nytt ämne när alla steg har lyckats.
  4. Klicka på rullgardinsmenyn "Åtgärder" och "Redigera ämnespolicy".

Steg 10: Skapa ett AWS SNS -ämne (del 2)

Skapa ett AWS SNS -ämne (del 2)
Skapa ett AWS SNS -ämne (del 2)
Skapa ett AWS SNS -ämne (del 2)
Skapa ett AWS SNS -ämne (del 2)
Skapa ett AWS SNS -ämne (del 2)
Skapa ett AWS SNS -ämne (del 2)
  1. Ange policyn så att alla kan publicera och prenumerera, eftersom detta är begränsningar för ett AWSEducate -konto.
  2. Prenumerera på detta ämne för att få uppdateringar som publicerats för detta ämne.
  3. Ändra protokollet till "E -post" och ange din e -postadress vid slutpunkten.

  4. Gå till din e -postadress där du skrev din slutpunkt, klicka på bekräftelselänken för att bekräfta din e -postabonnemang för att prenumerera på ämnet.
  5. Navigera till "AWS IoT" -tjänster, klicka på "Act" på navigeringsmenyn till vänster. På den här sidan visas dina regler och är tillgängliga för dig att se och redigera. För närvarande finns det inga regler för din IoT -sak, klicka på "Skapa en regel".

Steg 11: Skapa ett AWS SNS -ämne (del 3)

Skapa ett AWS SNS -ämne (del 3)
Skapa ett AWS SNS -ämne (del 3)
Skapa ett AWS SNS -ämne (del 3)
Skapa ett AWS SNS -ämne (del 3)
Skapa ett AWS SNS -ämne (del 3)
Skapa ett AWS SNS -ämne (del 3)
  1. Skriv ett namn i fältet Namn för din regel. Skriv in en beskrivning för din regel i fältet Beskrivning. Fortsätt till avsnittet Meddelandekälla, vi skulle välja den mest uppdaterade SQL -versionen i avsnittet "Använda SQL -version". Skriv * i attributet för att välja hela MQTT -meddelandet från ämnet, i vårt fall är vårt ämne "TempHumid".
  2. Lägg sedan till en "SNS" aviseringsåtgärd för din regel. Klicka sedan på "Konfigurera åtgärd".
  3. På sidan "Konfigurera åtgärd" väljer du det SNS -ämne som du just skapade och meddelandeformatet som RAW. Välj sedan den roll du just skapade med AWS CLI och klicka på "Lägg till åtgärd".
  4. Din åtgärd kommer att konfigureras och återgå till "Skapa en regel".
  5. Klicka på redigera om du vill redigera regeln.

Steg 12: Skapa en hink på Amazon S3

Skapa en hink på Amazon S3
Skapa en hink på Amazon S3
Skapa en hink på Amazon S3
Skapa en hink på Amazon S3
Skapa en hink på Amazon S3
Skapa en hink på Amazon S3
  1. Sök efter S3 i AWS -sökfältet.
  2. På Amazon S3 -sidan klickar du på knappen "Skapa hink" för att komma igång.
  3. Fyll i popup-formuläret som visas med följande information:

    • Skopnamn: seroma-bucket (detta måste vara unikt för alla befintliga Amazon S3-skopor)
    • Region: USA västra (Oregon)
    • Kopieringsinställningar: (Ignorera)
  4. För steg 2 till 3, hoppa helt enkelt över det genom att klicka på "Nästa" eftersom det inte finns något att ändra. Klicka på "Skapa hink" i steg 4.
  5. Efter skapandet bör du se din hink på hemsidan.

Steg 13: Skapa en AWS -policy (del 1)

Skapa en AWS -policy (del 1)
Skapa en AWS -policy (del 1)
Skapa en AWS -policy (del 1)
Skapa en AWS -policy (del 1)
Skapa en AWS -policy (del 1)
Skapa en AWS -policy (del 1)
  1. Klicka på hinken du skapade för att öppna sidan ovan och fortsätt till "Bucket Policy" under fliken "Behörigheter".
  2. Klicka sedan på länken "Policy Generator" längst ner på sidan för att skapa din AWS -policy.
  3. Ange följande värden i formuläret:

    • Typ av policy: S3 Bucket Policy
    • Effekt: Tillåt
    • Rektor: *
    • AWS -tjänst: Amazon S3
    • Åtgärder: GetObject
    • Amazons resursnamn (ARN): arn: aws: s3::: seroma-bucket
  4. Efter att ha fyllt i informationen, klicka på Lägg till uttalande.
  5. Klicka på knappen "Skapa policy".

Steg 14: Skapa en AWS -policy (del 2)

Skapa en AWS -policy (del 2)
Skapa en AWS -policy (del 2)
Skapa en AWS -policy (del 2)
Skapa en AWS -policy (del 2)
Skapa en AWS -policy (del 2)
Skapa en AWS -policy (del 2)
Skapa en AWS -policy (del 2)
Skapa en AWS -policy (del 2)
  1. Kopiera de genererade koderna och klicka på Stäng.
  2. Återgå till din Amazon S3 Bucket Policy -editor och klistra in de tidigare kopierade koderna.
  3. Lägg till en "/*" i koderna precis bakom resurskoderna, som i bilden ovan, klicka sedan på spara.
  4. Efter att ha gjort det kommer din hink att installeras och vara klar att användas.

Steg 15: Skapa tabeller för DynamoDB

Skapa tabeller för DynamoDB
Skapa tabeller för DynamoDB
Skapa tabeller för DynamoDB
Skapa tabeller för DynamoDB
  1. Sök efter DynamoDB i sökfältet i AWS Services
  2. Klicka på "Skapa tabell" och skapa tre tabeller med informationen nedan: (Endast "tabellnamn" och "primärnyckel" ändras)

    • accesslog, pk datetimevalue
    • roomstatus, pk datetimevalue
    • staffdata, pk användarnamn

Steg 16: Roomstatus.py

Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py
Roomstatus.py

Det här avsnittet innehåller koden för roomstatus.py, som skriver varje data om själva serverrummet varje minut. Detta inkluderar temperatur, luftfuktighet, rörelse (bilder och videor om det är sant) och åtkomstloggar. Den skriver också data till ett Google -kalkylblad, data till DynamoDB, bilder och videor (om sådana finns) till S3, visar information på LCD -skärmen, skickar ett SMS och e -postmeddelande vid misstänkt överträdelse eller när temperaturen eller luftfuktigheten är oregelbunden..

För att köra pythonfiler, byt katalog till var filen finns och skriv i konsolen: "sudo python"

Bild 2: Funktioner deklareras för att tillåta SMS och e -postvarningar och överföring till S3

Bild 3: Variabler deklarerade för funktioner och RPi för att fungera

Bild 4: Starten av slingan som hämtar värdena för temperatur och luftfuktighet från RPi. Det skriver också data till ett Google -kalkylblad

Bild 5: Säkerhetsdel i öglan. Den aktiveras bara från 19.00 till 07.00 (lediga tider). Det kommer att kontrollera om det rör sig om en minut. Om rörelse upptäcks tar det en bild och en video, laddas upp till S3, samtidigt som informationen skrivs till DynamoDB för referens senare. Efteråt kommer det att skicka ett SMS och e -post om något är oregelbundet.

Bild 6: Slutet på öglan. Det skriver också data till DynamoDB och skickar varningar i enlighet därmed. Den sista raden i slingan gör att manuset sover tills nästa minut har nåtts.

Steg 17: Rfid.py

Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py
Rfid.py

Det här avsnittet innehåller koden för rfid.py, som lägger till funktionaliteten att spåra när en anställd kommer åt serverrummet. Det är också en del av säkerhetsaspekten för Seroma, där en anställd inte får komma åt serverrummet efter kontorstid, för att förhindra dataintrång. Det skickar också ett e -postmeddelande och SMSar all personal om det misstänks ett brott.

Bild 2: Start av RFID -läsarlogiken. När ett kort skannas mot läsaren tas det unika id (uid) för kortet. Efteråt försöker vi hitta kortets uid -värde i personaldatatabellen för att se om kortet tillhör någon av personalen. Bild 3: Om kortets uid finns i databasen kommer det att kontrollera om det är under kontoret lediga tider. Om det är det kommer det att varna resten av de anställda via SMS och e -post till de prenumererade e -postadresserna. Om det fortfarande är under kontorstid kommer det att skriva en rad till accesslog -tabellen i databasen med relevant data. Det kommer också att visa ett välkomstmeddelande på LCD -skärmen.

Steg 18: Server.py

Server.py
Server.py
Server.py
Server.py
Server.py
Server.py

Detta är filen server.py. Vi kommer att använda Flask -ramverket för webbportalen. HTML -filerna som ska läggas in /mallar bifogas också.

Bild 1: Första rutten för kolv definierad. Det kommer att omdirigera användaren till inloggningssidan om de inte är inloggade och instrumentpanelsidan om de är det. Definierar också en funktion som ska användas i livestream -funktionen

Bild 2, 3, 4: Rutter för kolv. Den hämtar data från DynamoDB -tabellen och returnerar dem sedan till HTML -filerna så att de kan användas där.

Bild 5: Sista 2 rutterna för Flask. Den hanterar utloggningsfunktionen och livestream -funktionen. Det anger också porten som webbplatsen ska köras vid.

Steg 19: Telegram.py

Telegram.py
Telegram.py
Telegram.py
Telegram.py
Telegram.py
Telegram.py

Detta avsnitt innehåller koden för Seromas telegrambot. Den använder telepotbiblioteket för att trycka på Telegrams Bot API. Det fungerar genom att acceptera de frågor som det får och visa respektive information för användaren. Användaren kan skriva "hjälp" för en fullständig lista med kommandon.

Bild 1, 2: För att konfigurera en telegrambot måste du använda BotFather. Kör bara igenom instruktionerna för att få det HTTP -API som vi behöver i vår kod.

Bild 4: Exempel på en funktion som tar ett visst antal rader med data från databasen baserat på användarens begäran

Bild 5: Hur vi tar användarens input och bestämmer vad vi ska köra därefter.

Steg 20: Livestream (camera_pi.py)

Livestream (camera_pi.py)
Livestream (camera_pi.py)
Livestream (camera_pi.py)
Livestream (camera_pi.py)
Livestream (camera_pi.py)
Livestream (camera_pi.py)

Vi har implementerat en ny funktion för vårt serverrumövervakningssystem, en livestream av vad som händer i serverrummet, detta kan nås när som helst, var som helst. Hur den här livestreamen fungerar: Det är en funktion som görs i Flask, tillsammans med Pi -kameran. Videoramar laddas ner som det händer i verkligheten, så du kan faktiskt se att det är en liten fördröjning (1-2 sekunder) när videoramar laddas ner och delas ihop. Detta kunde inte göras utan trådning, eftersom bakgrundstråden läser bildrutor från kameran och lagrar den aktuella ramen. Att samla alla dessa ramar tillsammans skulle sedan mata ut en livestream.

Bild 2: Det här är en separat fil där alla videoramar lagras och som du kan se använder vi picameramodulen för att komma åt vår hallon pi -kamera eftersom det är det vi är mest bekanta med. Vi har en klass kamera så att vi kan importera funktionen som om det är en livestream och inte flera bilder som sammanfogas, därför skulle det i huvudapplikationen ta det som en livestream utan att behöva oroa dig för vad som händer bakom kulisserna.

Bild 3: Detta är en del av vår server.py -fil där livestreamdelen är kodad. Huvudklassen vi importerade för detta är kameran från vår camera_pi.py -fil högst upp i vår server.py -fil. Vi definierade en funktion i vår rotkatalog, gen, men den kommer bara i bruk när vi går till /video_feed där vår livestream är, där den kommer att gå igenom den här funktionen och returnera liveströmmen på webbsidan.

Rekommenderad: