Inhoudsopgave:

Seroma: Server Room Manager: 20 stappen
Seroma: Server Room Manager: 20 stappen

Video: Seroma: Server Room Manager: 20 stappen

Video: Seroma: Server Room Manager: 20 stappen
Video: 10 most expensive schools in uganda 2024, November
Anonim
Seroma: Serverruimte Manager
Seroma: Serverruimte Manager

Seroma is een alles-in-één serverruimtemanager waarmee gebruikers de status van de servers (temperatuur en vochtigheid), de toegangslogboeken van de serverruimte kunnen controleren en de serverruimte zelf kunnen controleren op eventuele beveiligingsinbreuken.

Stap 1: Log in op uw AWS-account

Log in op uw AWS-account
Log in op uw AWS-account
Log in op uw AWS-account
Log in op uw AWS-account
Log in op uw AWS-account
Log in op uw AWS-account
Log in op uw AWS-account
Log in op uw AWS-account
  1. Voor de onze hebben we ons aangemeld via de AWS-educatieve student-gateway omdat we een aws-account voor studenten hebben.
  2. Ga naar het tabblad "AWS-account" in het navigatiemenu in de rechterbovenhoek.
  3. Klik op "Ga naar uw AWS Educate Starter-account"
  4. Open Console om toegang te krijgen tot uw AWS Management Console.

Stap 2: Aan de slag met AWS IOT "dingen"

Aan de slag met AWS IOT
Aan de slag met AWS IOT
Aan de slag met AWS IOT
Aan de slag met AWS IOT
  1. Zoek naar "AWS IoT" in de zoekbalk van AWS-services.
  2. Klik op "Aan de slag" om door te gaan naar het AWS IoT Console-dashboard waar u alle IoT-apparaten kunt bekijken die zijn geregistreerd in uw AWS-account.

Stap 3: Een AWS IOT "ding" registreren

Een AWS IOT registreren
Een AWS IOT registreren
Een AWS IOT registreren
Een AWS IOT registreren
Een AWS IOT registreren
Een AWS IOT registreren
  1. Navigeer in de navigatiebalk om uw IoT-'dingen' te beheren.
  2. Klik op “Registreer een ding” als je nog niets hebt. (Als je al iets hebt, klik dan op de knop "Maken" in de rechterbovenhoek van het scherm naast het tabblad Zoeken.)
  3. Klik op de eerste knop genaamd "Creëer één ding".
  4. Typ "RaspberryPi" als de naam van het ding. Voor deze stap is geen andere invoer dan de "Naam" vereist. Klik daarna op volgende.

Stap 4: Een certificaat activeren

Een certificaat activeren
Een certificaat activeren
Een certificaat activeren
Een certificaat activeren
  1. Klik bij de volgende stap op de knop "Certificaat maken".
  2. Download en bewaar de 4 downloadlinks op de volgende pagina in een werkmap of map. Om het root-CA-bestand op te slaan, klikt u met de rechtermuisknop en slaat u op als.
  3. Klik op "Activeren" en er zou een succesbericht moeten verschijnen.
  4. Gebruik beschrijvende namen voor de bestanden door de nummers voor elke bestandsnaam te verwijderen en het root-CA-bestand te hernoemen naar "rootca.pem".
  5. Klik op "Voeg een beleid toe" om verder te gaan.

Stap 5: Een beleid toevoegen aan uw certificaat

Een beleid toevoegen aan uw certificaat
Een beleid toevoegen aan uw certificaat
Een beleid toevoegen aan uw certificaat
Een beleid toevoegen aan uw certificaat
Een beleid toevoegen aan uw certificaat
Een beleid toevoegen aan uw certificaat
  1. Op de volgende pagina, als u geen beleid heeft, zullen ze u vragen om er een te maken op de knop "Een beleid maken".
  2. Als u al een bestaande polis heeft, klikt u hieronder op de knop 'Nieuwe polis maken'.
  3. Voeg de volgende informatie in het formulier voor het maken van beleid in.

    Naam: RaspberryPiSecurityPolicy

    Actie: iot:*

    Bron ARN: *

    Effect: Toestaan

  4. Uw polis zou dan moeten verschijnen op het tabblad "Beleid" onder "Beveiliging".
  5. Ga vervolgens naar het tabblad "Certificaten" dat ook onder "Beveiliging" staat en voeg uw beleid toe aan het certificaat dat u eerder hebt gemaakt.
  6. Klik op de volgende pagina op uw polis en klik vervolgens op “Bijvoegen”.
  7. Op de detailpagina van het ding dat u hebt gemaakt, onder het tabblad "Interactie", is er een REST API-eindpunt dat moet worden gekopieerd en opgeslagen.
  8. AWS zou nu een ding moeten hebben dat aan een beleid is gekoppeld en een certificaat heeft.

Stap 6: Eerste instelling voor AWS SNS-onderwerp

Eerste instelling voor AWS SNS-onderwerp
Eerste instelling voor AWS SNS-onderwerp
Eerste instelling voor AWS SNS-onderwerp
Eerste instelling voor AWS SNS-onderwerp

SSH in Raspberry Pi en installeer AWS CLI met het volgende pip-commando:

sudo pip install awscli

AWS CLI bevat de functie voor het voltooien van opdrachten, maar is niet standaard geïnstalleerd. Gebruik de volgende opdracht om de functie voor het voltooien van opdrachten op de CLI-interface van Raspberry Pi te installeren:

compleet -C aws_completer aws

Configureer AWS CLI met toegangssleutel-ID, geheime toegangssleutel, AWS-regionaam en opdrachtuitvoerformaat met behulp van de volgende opdracht:

aws configureren

De console zal u dan vragen om de volgende informatie in te vullen:

pi@raspberrypi:~ $ aws configure

AWS-toegangssleutel-ID [Geen]: "Plaats hier de toegangssleutel-ID van uw gebruiker" Geheime AWS-toegangssleutel [Geen]: "Zet hier de geheime toegangssleutel van uw gebruiker" Standaard regionaam [Geen]: eu-central-1 Standaard uitvoerformaat [Geen]: json pi@raspberrypi:~ $

Stap 7: Iot-rol.trust.json-bestand maken

Iot-rol.trust.json-bestand maken
Iot-rol.trust.json-bestand maken
Iot-rol.trust.json-bestand maken
Iot-rol.trust.json-bestand maken
  1. Maak een JSON-bestand met het bovenstaande IAM-beleid met de bestandsnaam iot-role.trust.json.
  2. Maak de rol met behulp van de AWS CLI met behulp van de volgende opdracht:

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

Stap 8: Iot-policy.json-bestand maken

Iot-policy.json-bestand maken
Iot-policy.json-bestand maken
Iot-policy.json-bestand maken
Iot-policy.json-bestand maken
  1. Maak een JSON-bestand met het bovenstaande beleid met de bestandsnaam iot-policy.json.
  2. Maak het rolbeleid met behulp van de AWS CLI met behulp van de volgende opdracht:

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

Stap 9: Maak een AWS SNS-onderwerp (deel 1)

Maak een AWS SNS-onderwerp (deel 1)
Maak een AWS SNS-onderwerp (deel 1)
Maak een AWS SNS-onderwerp (deel 1)
Maak een AWS SNS-onderwerp (deel 1)
Maak een AWS SNS-onderwerp (deel 1)
Maak een AWS SNS-onderwerp (deel 1)
  1. Zoek in de zoekbalk van AWS-services naar "SNS" -service of ga naar
  2. Aangezien u nu geen onderwerpen heeft, klikt u op "Nieuw onderwerp maken" om een onderwerp aan te maken.
  3. Typ uw onderwerpnaam en weergavenaam in en klik op "Onderwerp maken" en er verschijnt een nieuw onderwerp wanneer alle stappen succesvol zijn.
  4. Klik op de vervolgkeuzeknop "Acties" en "Onderwerpbeleid bewerken".

Stap 10: Maak een AWS SNS-onderwerp (deel 2)

Maak een AWS SNS-onderwerp (deel 2)
Maak een AWS SNS-onderwerp (deel 2)
Maak een AWS SNS-onderwerp (deel 2)
Maak een AWS SNS-onderwerp (deel 2)
Maak een AWS SNS-onderwerp (deel 2)
Maak een AWS SNS-onderwerp (deel 2)
  1. Stel het beleid zo in dat iedereen kan publiceren en zich kan abonneren, aangezien dit de beperkingen zijn van een AWSEducate-account.
  2. Abonneer u op dit onderwerp om updates over dit onderwerp te ontvangen.
  3. Wijzig het protocol in "E-mail" en voer uw e-mailadres in bij het eindpunt.

  4. Ga naar je e-mail waar je je eindpunt hebt getypt, klik op de bevestigingslink om je e-mailabonnement te bevestigen om je op het onderwerp te abonneren.
  5. Navigeer naar "AWS IoT"-services, klik in het navigatiemenu aan de linkerkant op "Act". Op deze pagina worden uw regels weergegeven en kunt u ze bekijken en bewerken. Momenteel zijn er geen regels voor uw IoT-ding, klik op "Een regel maken".

Stap 11: Maak een AWS SNS-onderwerp (deel 3)

Maak een AWS SNS-onderwerp (deel 3)
Maak een AWS SNS-onderwerp (deel 3)
Maak een AWS SNS-onderwerp (deel 3)
Maak een AWS SNS-onderwerp (deel 3)
Maak een AWS SNS-onderwerp (deel 3)
Maak een AWS SNS-onderwerp (deel 3)
  1. Typ een naam in het veld Naam voor uw regel. Typ in het veld Beschrijving een beschrijving voor uw regel. Als we doorgaan naar het gedeelte Berichtbron, kiezen we de meest bijgewerkte SQL-versie in het gedeelte 'SQL-versie gebruiken'. Typ * in het attribuut om het volledige MQTT-bericht uit het onderwerp te selecteren, in ons geval is ons onderwerp "TempHumid".
  2. Voeg vervolgens een meldingsactie 'SNS' toe voor uw regel. Klik vervolgens op "Actie configureren".
  3. Kies op de pagina "Actie configureren" het SNS-onderwerp dat u zojuist hebt gemaakt en het berichtformaat als RAW. Kies daarna de rol die u zojuist hebt gemaakt met AWS CLI en klik op "Actie toevoegen".
  4. Uw actie wordt geconfigureerd en keert terug naar "Een regel maken".
  5. Klik op bewerken als u de regel wilt bewerken.

Stap 12: Maak een bucket op Amazon S3

Maak een bucket op Amazon S3
Maak een bucket op Amazon S3
Maak een bucket op Amazon S3
Maak een bucket op Amazon S3
Maak een bucket op Amazon S3
Maak een bucket op Amazon S3
  1. Zoek naar S3 in de AWS-zoekbalk.
  2. Klik op de Amazon S3-pagina op de knop "Emmer maken" om aan de slag te gaan.
  3. Vul het pop-upformulier in dat verschijnt met de volgende informatie:

    • Emmernaam: seroma-emmer (dit moet uniek zijn voor alle bestaande Amazon S3-emmers)
    • Regio: VS West (Oregon)
    • Instellingen kopiëren: (Negeren)
  4. Voor stappen 2 tot 3 slaat u deze eenvoudig over door op "Volgende" te klikken, aangezien er niets hoeft te worden gewijzigd. Klik in stap 4 op "Emmer maken".
  5. Na het maken zou u uw bucket op de startpagina moeten zien.

Stap 13: Genereer een AWS-beleid (deel 1)

Genereer een AWS-beleid (deel 1)
Genereer een AWS-beleid (deel 1)
Genereer een AWS-beleid (deel 1)
Genereer een AWS-beleid (deel 1)
Genereer een AWS-beleid (deel 1)
Genereer een AWS-beleid (deel 1)
  1. Klik op de bucket die u hebt gemaakt om de bovenstaande pagina te openen en ga vervolgens naar "Bucketbeleid" onder het tabblad "Machtigingen".
  2. Klik vervolgens op de link "Policy Generator" onderaan de pagina om uw AWS-beleid te genereren.
  3. Voer in het formulier de volgende waarden in:

    • Soort beleid: S3-bucketbeleid
    • Effect: Toestaan
    • Voornaam: *
    • AWS-service: Amazon S3
    • Acties: GetObject
    • Amazon-bronnaam (ARN): arn:aws:s3:::seroma-bucket
  4. Klik na het invullen van de gegevens op Verklaring toevoegen.
  5. Klik op de knop "Beleid genereren".

Stap 14: Genereer een AWS-beleid (deel 2)

Genereer een AWS-beleid (deel 2)
Genereer een AWS-beleid (deel 2)
Genereer een AWS-beleid (deel 2)
Genereer een AWS-beleid (deel 2)
Genereer een AWS-beleid (deel 2)
Genereer een AWS-beleid (deel 2)
Genereer een AWS-beleid (deel 2)
Genereer een AWS-beleid (deel 2)
  1. Kopieer de gegenereerde codes en klik op sluiten.
  2. Keer terug naar je Amazon S3 Bucket Policy-editor en plak de eerder gekopieerde codes.
  3. Voeg een "/*" toe aan de codes direct achter de broncodes, zoals in de afbeelding hierboven, en klik vervolgens op opslaan.
  4. Nadat u dit heeft gedaan, is uw emmer met succes ingesteld en klaar voor gebruik.

Stap 15: Tabellen maken voor DynamoDB

Tabellen maken voor DynamoDB
Tabellen maken voor DynamoDB
Tabellen maken voor DynamoDB
Tabellen maken voor DynamoDB
  1. Zoek naar DynamoDB in de zoekbalk van AWS Services
  2. Klik op "Tabel maken" en maak 3 tabellen aan met onderstaande informatie: (Alleen de "tabelnaam" en "primaire sleutel" worden gewijzigd)

    • accesslog, pk datetimevalue
    • kamerstatus, pk datetimevalue
    • personeelsgegevens, pk gebruikersnaam

Stap 16: Roomstatus.py

Kamerstatus.py
Kamerstatus.py
Kamerstatus.py
Kamerstatus.py
Kamerstatus.py
Kamerstatus.py
Kamerstatus.py
Kamerstatus.py

Deze sectie bevat de code voor roomstatus.py, die elke minuut alle gegevens met betrekking tot de serverruimte zelf wegschrijft. Dit omvat de temperatuur, vochtigheid, beweging (afbeeldingen en video's indien waar) en toegangslogboeken. Het schrijft ook gegevens naar een Google-spreadsheet, gegevens naar DynamoDB, afbeeldingen en video's (indien aanwezig) naar S3, geeft informatie weer op het LCD-scherm, verzendt een sms en e-mail wanneer er een vermoedelijke inbreuk is of wanneer de temperatuur of vochtigheid onregelmatig is.

Om python-bestanden uit te voeren, wijzigt u de map naar waar het bestand zich bevindt en typt u in console: "sudo python"

Pic 2: Functies die zijn aangegeven om sms- en e-mailwaarschuwingen toe te staan, en uploaden naar S3

Pic 3: Variabelen gedeclareerd voor functies en RPi om te werken

Pic 4: Start van de lus die de temperatuur- en vochtigheidswaarden van de RPi krijgt. Het schrijft de gegevens ook naar een Google-spreadsheet

Pic 5: Beveiligingsgedeelte van de lus. Het wordt alleen geactiveerd van 19.00 uur tot 07.00 uur (buiten kantooruren). Het zal binnen een minuut op beweging controleren. Als er beweging wordt gedetecteerd, worden er een afbeelding en video gemaakt, geüpload naar S3 en wordt informatie naar DynamoDB geschreven ter referentie. Daarna stuurt het een sms en e-mail als er iets onregelmatig is.

Pic 6: Het einde van de lus. Het schrijft ook gegevens naar DynamoDB en stuurt dienovereenkomstig waarschuwingen. De laatste regel van de lus zorgt ervoor dat het script slaapt tot de volgende minuut is bereikt.

Stap 17: RFID.py

RFID.py
RFID.py
RFID.py
RFID.py
RFID.py
RFID.py
RFID.py
RFID.py

Deze sectie bevat de code voor rfid.py, die de functionaliteit toevoegt om bij te houden wanneer een personeelslid de serverruimte betreedt. Het maakt ook deel uit van het beveiligingsaspect van Seroma, waarbij een medewerker na kantooruren de serverruimte niet mag betreden om een datalek te voorkomen. Het stuurt ook een e-mail en sms naar al het personeel als een inbreuk wordt vermoed.

Pic 2: Start van de RFID-lezerlogica. Telkens wanneer een kaart tegen de lezer wordt gescand, wordt de unieke id (uid) van de kaart genomen. Daarna proberen we de uid-waarde van de kaart te vinden in de tabel met personeelsgegevens om te zien of de kaart van een van de medewerkers is. Foto 3: Als de uid van de kaart in de database bestaat, zal deze controleren of deze tijdens kantooruren is vrije uren. Als dit het geval is, zal het de rest van de werknemers via sms en e-mail op de ingeschreven e-mailadressen waarschuwen. Als het nog steeds tijdens kantooruren is, zal het een rij naar de accesslog-tabel in de database schrijven met de relevante gegevens. Het zal ook een welkomstbericht weergeven op het LCD-scherm.

Stap 18: Server.py

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

Dit is het server.py-bestand. We zullen het Flask-framework gebruiken voor de webportal. De HTML-bestanden die in /templates moeten worden geplaatst, zijn ook bijgevoegd.

Pic 1: Eerste route voor Flask gedefinieerd. Het zal de gebruiker omleiden naar de inlogpagina als ze niet zijn ingelogd, en de dashboardpagina als ze dat wel zijn. Definieert ook een functie die moet worden gebruikt in de livestreamfunctie

Pic 2, 3, 4: Routes voor Flask. Het haalt gegevens uit de DynamoDB-tabel en retourneert ze vervolgens naar de HTML-bestanden zodat ze daar kunnen worden gebruikt.

Pic 5: Laatste 2 routes voor Flask. Het behandelt de uitlogfunctie en de livestream-functie. Het specificeert ook de poort waarop de website zal draaien.

Stap 19: Telegram.py

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

Dit gedeelte bevat de code voor de telegrambot van Seroma. Het gebruikt de telepotbibliotheek om op de Bot API van Telegram te tikken. Het werkt door de vragen die het krijgt te accepteren en de respectieve informatie aan de gebruiker weer te geven. De gebruiker kan 'help' typen voor een volledige lijst met opdrachten.

Pic 1, 2: Om een telegrambot in te stellen, moet je BotFather gebruiken. Doorloop gewoon de instructies om de HTTP API te krijgen die we nodig hebben in onze code.

Pic 4: Voorbeeld van een functie die een bepaald aantal rijen gegevens uit de database haalt op basis van het verzoek van de gebruiker

Pic 5: Hoe we de input van de gebruiker nemen en beslissen wat we dienovereenkomstig moeten uitvoeren.

Stap 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)

We hebben een nieuwe functie geïmplementeerd voor ons serverruimtebewakingssysteem, een livestream van wat er in de serverruimte gebeurt, dit is op elk moment en overal toegankelijk. Hoe deze livestream werkt: het is een functie die wordt gedaan in Flask, samen met de Pi-camera. Videoframes worden gedownload zoals het in het echte leven gebeurt, dus je kunt zien dat er een kleine vertraging is (1-2 seconden) als videoframes worden gedownload en samengevoegd. Dit kon niet worden gedaan zonder threading, omdat de achtergrondthread frames van de camera leest en het huidige frame opslaat. Door al deze frames samen te voegen, wordt een livestream uitgevoerd.

Pic 2: Dit is een apart bestand waarin alle videoframes zijn opgeslagen en zoals je kunt zien, gebruiken we de picamera-module om toegang te krijgen tot onze Raspberry Pi-camera, want dat is waar we het meest bekend mee zijn. We hebben een klasse Camera, zodat we de functie kunnen importeren alsof het een livestream is en niet meerdere afbeeldingen die aan elkaar worden toegevoegd, dus in het hoofdtoepassingsbestand zou het als een livestream worden beschouwd zonder ons zorgen te hoeven maken over wat er achter de schermen gebeurt.

Pic 3: Dit maakt deel uit van ons server.py-bestand waarin het livestream-gedeelte is gecodeerd. De hoofdklasse die we hiervoor hebben geïmporteerd, is de camera uit ons camera_pi.py-bestand bovenaan ons server.py-bestand. We hebben een functie gedefinieerd in onze hoofdmap, gen, maar deze wordt alleen gebruikt als we naar /video_feed gaan waar onze livestream zich bevindt, waar deze door deze functie loopt en de livestream op de webpagina retourneert.

Aanbevolen: