Bismillahirrahmanirrahim.
[TL;DR]
Beberapa waktu yang lalu saya mendapatkan tugas untuk membuat sebuah program ping server sederhana menggunakan bahasa pemrograman Python. Nanti ada dua program yang berjalan, satu berada di sisi server dan satu lagi berada di sisi klien.
Si server bertugas memberitahukan informasi pemakaian harddisk server kepada si klien. Informasi tersebut dikemas dalam bentuk JSON. Untuk si klien, ia bertugas melakukan ping ke server dan jika server sedang UP, maka klien akan meminta informasi pemakaian harddisk si server. Komunikasi antara server dan klien memanfaatkan RPC.
[Screenshot Percobaan]
[Kode Sumber Program]
Berikut adalah kode program yang akan berjalan di sisi server
from xmlrpc.server import SimpleXMLRPCServer | |
from shutil import disk_usage | |
from json import dumps | |
kilo_bytes = 1024 | |
mega_bytes = 1024 * 1024 | |
giga_bytes = 1024 * 1024 * 1024 | |
def send_to_client(): | |
(total, used, free) = disk_usage ("/") | |
server_disk_usage = { | |
"Total" : { | |
"kB" : float(total)/kilo_bytes, | |
"MB" : float(total)/mega_bytes, | |
"GB" : float(total)/giga_bytes | |
}, | |
"Used" : { | |
"kB" : float(used)/kilo_bytes, | |
"MB" : float(used)/mega_bytes, | |
"GB" : float(used)/giga_bytes | |
}, | |
"Free" : { | |
"kB" : float(free)/kilo_bytes, | |
"MB" : float(free)/mega_bytes, | |
"GB" : float(free)/giga_bytes | |
} | |
} | |
return dumps(server_disk_usage) | |
def main(): | |
server = SimpleXMLRPCServer(("", 13000)) | |
server.register_function(send_to_client,"server_disk_usage") | |
server.serve_forever() | |
if __name__ == '__main__': | |
main() |
Berikut adalah kode program yang akan berjalan di sisi klien
from json import loads | |
from xmlrpc.client import ServerProxy | |
from os import system | |
from sys import argv | |
def ping_server(server_addr): | |
print("Checking the server status...") | |
status = system("ping -c 1 -w 5 " + server_addr + " > /dev/null 2>&1") | |
if status == 0: | |
return ("Up", server_addr) | |
else: | |
return ("Down", server_addr) | |
def print_info_disk(info, data_disk): | |
for i in info: | |
print("%s\t\t\t: %.2f kB\t\t%.2f MB\t%.2f GB" \ | |
% (i, data_disk[i]['kB'], data_disk[i]['MB'], data_disk[i]['GB'])) | |
def main(server_addr): | |
server = ServerProxy("http://" + server_addr + ":13000/", allow_none=True) | |
(status_server, addr) = ping_server(server_addr) | |
print("%s status\t: %s" % (addr, status_server)) | |
if status_server == "Up": | |
try: | |
data_disk = loads(server.server_disk_usage()) | |
print_info_disk(["Total", "Used", "Free"], data_disk) | |
except ConnectionRefusedError: | |
print("Can't connect to lovorus-server.py on the server") | |
if __name__ == '__main__': | |
if len(argv) == 2: | |
main(argv[1]) | |
else: | |
print("Need an IP address") |
sekali kali share tentang js kaka :v
jangan python terus… haha
LikeLike
Hampir nggak pernah pegang JS 😐
LikeLike
Keren, kebetulan saya sedang belajar python.
LikeLike
>>> from shutil import disk_usage
Traceback (most recent call last):
File “”, line 1,
ImportError: cannot import name disk_usage
>>>
LikeLike
Pakai python versi berapa?
LikeLike