loader
Foto

Linux service készítése

Gyakran előfordul az, hogy akár az általunk készített alkalmazást állandóan futtatni kell a háttérben. Még akkor is, amikor bontjuk a szerverrel a kapcsolatot, vagy kilépünk a terminálablakból. Ha a cél az, hogy az adott alkalmazás állandóan fusson a háttérben, egy service-t kell létrehozni és engedélyezni. A PLC-t emuláló virtuális gépen megvalósításra kerül egy service, amely egy Modbus TCP szervert futtat a háttérben.

Amikor egy alkalmazást (pl.: Modbus TCP szerver) futtatunk Linux alatt egy terminálablakban, akkor ez az alkalmazás csak addig fut, amíg az adott ablak nyitva van. Ha kilépünk az ablakból (vagy bontjuk a távoli kapcsolatot), akkor az adott szolgáltatás futása véget ér, már nem elérhető. Ha azt szeretnénk, hogy az adott alkalmazás továbbra is működjön, alkalmazni kell a "screen"-t.
Vagy......
Vagy kell készíteni egy service-t, azaz egy szolgáltatást. 

Indítsuk el a szövegszerkesztőt a terminálablakban, és másoljuk be a következő programot. Ez a Python nyelven írt alkalmazás létrehozza a "timeSave.txt" file-t, és 15 másodpercenként beírja ebbe a szöveges file-ba az aktuális időt.

import time
from datetime import datetime

while True:
	now = datetime.now()
	with open("timeSave.txt", "a") as f:
		f.write("Time: " + str(now) + "\n")
		f.close()
		print("Time: " + str(now))
	time.sleep(15)

 

A futási eredmény látható a következő sorokban.

Time: 2022-11-15 14:12:26.190826
Time: 2022-11-15 14:12:41.201815
Time: 2022-11-15 14:12:56.202593

 

Ha kilépünk abból a terminálablakból, ahol futtatjuk ezt a Python nyelven írt alkalmazást, akkor már nem kerül 15 másodpercenként kiírásra az aktuális időpont.

Hozzunk létre tehát egy újabb file-t "peldaService.service" néven, és másoljuk be a következő sorokat. A Linux service három részből áll, az "Unit", a "Service" és az "Install" blokkokból.

[Unit]
Description=Demo a szolgaltatasirasra
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=plc
ExecStart=/usr/bin/python3  /home/plc/pythonCodes/pelda1.py

[Install]
WantedBy=multi-user.target

 

Látható az első ábrán, hogy a most létrehozott service engedélyeztetésre és futtatásra került. 

kep
1. ábra   A "peldaService.service" engedélyeztetése és futtatása
 

Ha szeretnénk meggyőződni a service állapotáról, státuszáról, akkor a következő utasítás kiadása szükséges.

sudo systemctl status peldaService.service

 

Látható, hogy az elkészített service aktív (2. ábra).

kep
2. ábra   A saját service aktív, futtatja a Pythony nyelven írt alkalmazásunkat
 

Most a korábban közölt Modbus TCP szerver állandó futtatásához szükséges service-t készítsük el, egy új file-ba, amely a PLC-t emuláló virtuális gépen van, másoljuk be a következő sorokat.

[Unit]
Description=Demo a szolgaltatasirasra
After=network.target
StartLimitIntervalSec=0
[Service]
Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/usr/bin/python3  /home/plc/pythonCodes/modbusServer.py

[Install]
WantedBy=multi-user.target

 

A 3. ábrán látható az, hogy a PLC-t emuláló virtuális gépen a most implementált service aktív.

kep
3. ábra   A PLC-t emuláló virtuális gépen lévő szolgáltatás állapota aktív
 

A másik virtuális gépen, amelyen a Kali Linux operációs rendszer található, futtassunk egy port scant az nmap segítségével. Látható a port scan futási eredményén, hogy az 502/TCP port nyitva van, tehát a Modbus TCP szerver üzemel (azaz, a szolgáltatásunk működik, az általa futtatott Python alkalmazás működik).

kep
4. ábra   A teljes port scan futási eredménye a Kali Linux terminálablakában
 

Ha elindítjuk a Modbus klienst implentáló Python nyelven készült alkalmazást, akkor a terminálablakban megjelennek a szervernek elküldött véletlenszámok (5. ábra).

kep
5. ábra   Működik a Modbsu TCP kliens, tehát a távoli Modbus TCP szerver elérhető
 

A Modbus TCP szerver és kliens alkalmazások elérhetők a WebElektronika github oldalán.

https://github.com/webelektronika/ICS_Scripts/tree/main/modbus

 



Egyéb cikkek

Mappa

További cikkeink ebben a témakörben

Régebbi cikkeink

Az nmap (grafikus megjelenítésnél a ZenMap) használata az IT biztonság, illetve az üzemeltetés területén dolgozó szakembereknél szinte elkerülhetetlen. Az ingyenes szoftver segítségével tesztelhetők a számítógépeink, a számítógéphálózatunk, vizsgálha. . . .

A Python programozási nyelv nagyon elterjedt a fejlesztők körében. Használják beágyazott rendszereknél, webes alkalmazásoknál, IT biztonság különböző területein, stb. Látható, hogy nagyon széles a felhasználási területe ennek a nyelvnek, ideje volt m. . . .

Bemutatjuk most a saját (!) Wifi-s hálózatunk tesztelésének az alapjait. Megnézzük, hogy hogyan lehet biztonságos jelszót választani. Feltörhetetlen rendszer nem létezik, de megismerve a tesztelés folyamatát, válaszokat kaphatunk arra vonatkozólag, h. . . .