From 3e0a02f677a8bce71a6c214f40693d8593e0cf60 Mon Sep 17 00:00:00 2001 From: Sebastian Rieger Date: Tue, 6 Dec 2016 00:27:29 +0100 Subject: [PATCH] fixed cloud config file generation and added tcp download client/server --- .../kommprot-lab3-clientserverapp.virl | 390 +++++++++++++++--- 1 file changed, 324 insertions(+), 66 deletions(-) diff --git a/GIT-VIRL-HS-Fulda/Kommunikationsnetze und -protokolle (Bachelor AI)/kommprot-lab3-clientserverapp.virl b/GIT-VIRL-HS-Fulda/Kommunikationsnetze und -protokolle (Bachelor AI)/kommprot-lab3-clientserverapp.virl index 53ad7fb..43c82f8 100644 --- a/GIT-VIRL-HS-Fulda/Kommunikationsnetze und -protokolle (Bachelor AI)/kommprot-lab3-clientserverapp.virl +++ b/GIT-VIRL-HS-Fulda/Kommunikationsnetze und -protokolle (Bachelor AI)/kommprot-lab3-clientserverapp.virl @@ -9,7 +9,7 @@ #cloud-config bootcmd: - ln -s -t /etc/rc.d /etc/rc.local -hostname: client +hostname: client1 manage_etc_hosts: true runcmd: - systemctl start rc-local @@ -46,65 +46,88 @@ write_files: #!/bin/sh ifconfig eth1 up 10.0.0.20 netmask 255.255.0.0 route add -host 192.168.0.1 gw 10.0.0.1 dev eth1 - route add -net 10.0.0.0/16 gw 10.0.0.1 dev eth1 route add default gw 10.0.0.1 echo "nameserver 8.8.8.8" >/etc/resolv.conf + chown -R cisco:cisco /home/cisco exit 0 -- path: /home/cisco/udpserver.py - owner: cisco:cisco - permissions: '0755' - content: |- +- path: /home/cisco/udp-client.py + content: | #!/usr/bin/python from socket import * - + + # Server-Adresse und Port + serverName = "localhost" + serverPort = 17000 + + # Client Socket (IP, UDP) oeffnen + clientSocket = socket(AF_INET, SOCK_DGRAM) + + # Nachricht vom Benutzer erfragen und versenden + message = raw_input("UDP Nachricht in Kleinbuchstaben eingeben:") + clientSocket.sendto(message,(serverName, serverPort)) + + # Antwort des Server aus Socket lesen und ausgeben + modifiedMessage, serverAddress = clientSocket.recvfrom(2048) + print "Antwort des Servers: ", modifiedMessage + raw_input("Fertig...") + + # Verbindung schliessen + clientSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/udp-server.py + content: | + #!/usr/bin/python + from socket import * + # UDP Port auf dem der Server lauschen soll... serverPort = 17000 - + # Server-Socket als Internet (INET) UDP (DGRAM) erzeugen und an o.g. Port binden serverSocket = socket(AF_INET, SOCK_DGRAM) serverSocket.bind(("", serverPort)) print "UDP Server ist bereit fuer den Empfang von Daten..." - + # Endlosschleife while 1: - # Eingehende Nachrichten von Clients empfangen - message, clientAddress = serverSocket.recvfrom(2048) - # Alle Buchstaben der Nachricht in Grossbuchstaben umwandeln und an den - # Client zuruecksenden - modifiedMessage = message.upper() - serverSocket.sendto(modifiedMessage, clientAddress) -- path: /home/cisco/udpclient.py - owner: cisco:cisco - permissions: '0755' - content: |- + # Eingehende Nachrichten von Clients empfangen + message, clientAddress = serverSocket.recvfrom(2048) + # Alle Buchstaben der Nachricht in Grossbuchstaben umwandeln und an den + # Client zuruecksenden + modifiedMessage = message.upper() + serverSocket.sendto(modifiedMessage, clientAddress) + owner: root:root + permissions: '0777' +- path: /home/cisco/tcp-client.py + content: | #!/usr/bin/python from socket import * - - # Server-Adresse und Port + + # Serveradresse und TCP Port auf den der Server hoert... serverName = "localhost" serverPort = 17000 - - # Client Socket (IP, UDP) oeffnen - clientSocket = socket(AF_INET, SOCK_DGRAM) - - # Nachricht vom Benutzer erfragen und versenden - message = raw_input("UDP Nachricht in Kleinbuchstaben eingeben:") - clientSocket.sendto(message,(serverName, serverPort)) - - # Antwort des Server aus Socket lesen und ausgeben - modifiedMessage, serverAddress = clientSocket.recvfrom(2048) - print "Antwort des Servers: ", modifiedMessage + # Socket fuer IP (INET) und TCP (STREAM) konfigurieren + clientSocket = socket(AF_INET, SOCK_STREAM) + clientSocket.connect((serverName,serverPort)) + + # Nachricht vom Benutzer abfragen und an den Server senden + sentence = raw_input("TCP Nachricht in Kleinbuchstaben eingeben:") + clientSocket.send(sentence) + + # Antwort des Servers ausgeben + modifiedSentence = clientSocket.recv(1024) + print "Antwort des Servers:", modifiedSentence raw_input("Fertig...") - + # Verbindung schliessen clientSocket.close() -- path: /home/cisco/tcpserver.py - owner: cisco:cisco - permissions: '0755' - content: |- + owner: root:root + permissions: '0777' +- path: /home/cisco/tcp-server.py + content: | #!/usr/bin/python from socket import * - + # TCP Port auf dem der Server lauschen soll... serverPort = 17000 # Server-Socket als Internet (INET) TCP (STREAM) erzeugen und an o.g. Port binden @@ -112,43 +135,73 @@ write_files: serverSocket.bind(("",serverPort)) serverSocket.listen(1) print "TCP Server ist bereit fuer den Empfang von Daten..." - + # Endlosschleife while 1: - # Eingehende Nachrichten akzeptieren und von Clients empfangen - connectionSocket, addr = serverSocket.accept() - sentence = connectionSocket.recv(1024) - # Alle Buchstaben der Nachricht in Grossbuchstaben umwandeln und an den - # Client zuruecksenden - capitalizedSentence = sentence.upper() - connectionSocket.send(capitalizedSentence) - # Verbindung schliessen - connectionSocket.close() -- path: /home/cisco/tcpclient.py - owner: cisco:cisco - permissions: '0755' - content: |- + # Eingehende Nachrichten akzeptieren und von Clients empfangen + connectionSocket, addr = serverSocket.accept() + sentence = connectionSocket.recv(1024) + # Alle Buchstaben der Nachricht in Grossbuchstaben umwandeln und an den + # Client zuruecksenden + capitalizedSentence = sentence.upper() + connectionSocket.send(capitalizedSentence) + # Verbindung schliessen + connectionSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/tcpdownload-client.py + content: | #!/usr/bin/python from socket import * - + import time + # Serveradresse und TCP Port auf den der Server hoert... - serverName = "localhost" + serverName = "10.0.0.30" serverPort = 17000 # Socket fuer IP (INET) und TCP (STREAM) konfigurieren clientSocket = socket(AF_INET, SOCK_STREAM) clientSocket.connect((serverName,serverPort)) - - # Nachricht vom Benutzer abfragen und an den Server senden - sentence = raw_input("TCP Nachricht in Kleinbuchstaben eingeben:") - clientSocket.send(sentence) - + # Antwort des Servers ausgeben - modifiedSentence = clientSocket.recv(1024) - print "Antwort des Servers:", modifiedSentence + length = 0 + start = time.time() + while 1: + data = clientSocket.recv(1024) + if not data: + break + length += len(data) + elapsed = time.time() - start + print str(length) + " Bytes geladen in " + str(elapsed) + " secs (" + str(length / elapsed) + " bytes/s)" raw_input("Fertig...") - + # Verbindung schliessen clientSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/tcpdownload-server.py + content: | + #!/usr/bin/python + from socket import * + + # TCP Port auf dem der Server lauschen soll... + serverPort = 17000 + # Server-Socket als Internet (INET) TCP (STREAM) erzeugen und an o.g. Port binden + serverSocket = socket(AF_INET,SOCK_STREAM) + serverSocket.bind(("",serverPort)) + serverSocket.listen(1) + downloadSize = raw_input("Download-Groesse: ") + print "TCP Server ist bereit fuer den Download..." + + # Endlosschleife + while 1: + # Eingehende Nachrichten akzeptieren und von Clients empfangen + connectionSocket, addr = serverSocket.accept() + # Bytes an Client zuruecksenden + connectionSocket.send("a" * int(downloadSize)) + # Verbindung schliessen + connectionSocket.close() + owner: root:root + permissions: '0777' @@ -158,7 +211,7 @@ write_files: #cloud-config bootcmd: - ln -s -t /etc/rc.d /etc/rc.local -hostname: server +hostname: server1 manage_etc_hosts: true runcmd: - systemctl start rc-local @@ -195,20 +248,225 @@ write_files: #!/bin/sh ifconfig eth1 up 10.0.0.30 netmask 255.255.0.0 route add -host 192.168.0.1 gw 10.0.0.1 dev eth1 - route add -net 10.0.0.0/16 gw 10.0.0.1 dev eth1 route add default gw 10.0.0.1 echo "nameserver 8.8.8.8" >/etc/resolv.conf + chown -R cisco:cisco /home/cisco exit 0 +- path: /home/cisco/udpclient.py + content: | + #!/usr/bin/python + from socket import * + + # Server-Adresse und Port + serverName = "localhost" + serverPort = 17000 + + # Client Socket (IP, UDP) oeffnen + clientSocket = socket(AF_INET, SOCK_DGRAM) + + # Nachricht vom Benutzer erfragen und versenden + message = raw_input("UDP Nachricht in Kleinbuchstaben eingeben:") + clientSocket.sendto(message,(serverName, serverPort)) + + # Antwort des Server aus Socket lesen und ausgeben + modifiedMessage, serverAddress = clientSocket.recvfrom(2048) + print "Antwort des Servers: ", modifiedMessage + raw_input("Fertig...") + + # Verbindung schliessen + clientSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/udpserver.py + content: | + #!/usr/bin/python + from socket import * + + # UDP Port auf dem der Server lauschen soll... + serverPort = 17000 + + # Server-Socket als Internet (INET) UDP (DGRAM) erzeugen und an o.g. Port binden + serverSocket = socket(AF_INET, SOCK_DGRAM) + serverSocket.bind(("", serverPort)) + print "UDP Server ist bereit fuer den Empfang von Daten..." + + # Endlosschleife + while 1: + # Eingehende Nachrichten von Clients empfangen + message, clientAddress = serverSocket.recvfrom(2048) + # Alle Buchstaben der Nachricht in Grossbuchstaben umwandeln und an den + # Client zuruecksenden + modifiedMessage = message.upper() + serverSocket.sendto(modifiedMessage, clientAddress) + owner: root:root + permissions: '0777' +- path: /home/cisco/tcpclient.py + content: | + #!/usr/bin/python + from socket import * + + # Serveradresse und TCP Port auf den der Server hoert... + serverName = "localhost" + serverPort = 17000 + # Socket fuer IP (INET) und TCP (STREAM) konfigurieren + clientSocket = socket(AF_INET, SOCK_STREAM) + clientSocket.connect((serverName,serverPort)) + + # Nachricht vom Benutzer abfragen und an den Server senden + sentence = raw_input("TCP Nachricht in Kleinbuchstaben eingeben:") + clientSocket.send(sentence) + + # Antwort des Servers ausgeben + modifiedSentence = clientSocket.recv(1024) + print "Antwort des Servers:", modifiedSentence + raw_input("Fertig...") + + # Verbindung schliessen + clientSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/tcpserver.py + content: | + #!/usr/bin/python + from socket import * + + # TCP Port auf dem der Server lauschen soll... + serverPort = 17000 + # Server-Socket als Internet (INET) TCP (STREAM) erzeugen und an o.g. Port binden + serverSocket = socket(AF_INET,SOCK_STREAM) + serverSocket.bind(("",serverPort)) + serverSocket.listen(1) + print "TCP Server ist bereit fuer den Empfang von Daten..." + + # Endlosschleife + while 1: + # Eingehende Nachrichten akzeptieren und von Clients empfangen + connectionSocket, addr = serverSocket.accept() + sentence = connectionSocket.recv(1024) + # Alle Buchstaben der Nachricht in Grossbuchstaben umwandeln und an den + # Client zuruecksenden + capitalizedSentence = sentence.upper() + connectionSocket.send(capitalizedSentence) + # Verbindung schliessen + connectionSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/tcpclient-download.py + content: | + #!/usr/bin/python + from socket import * + import time + + # Serveradresse und TCP Port auf den der Server hoert... + serverName = "10.0.0.30" + serverPort = 17000 + # Socket fuer IP (INET) und TCP (STREAM) konfigurieren + clientSocket = socket(AF_INET, SOCK_STREAM) + clientSocket.connect((serverName,serverPort)) + + # Antwort des Servers ausgeben + length = 0 + start = time.time() + while 1: + data = clientSocket.recv(1024) + if not data: + break + length += len(data) + elapsed = time.time() - start + print str(length) + " Bytes geladen in " + str(elapsed) + " secs (" + str(length / elapsed) + " bytes/s)" + raw_input("Fertig...") + + # Verbindung schliessen + clientSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/tcpserver-download.py + content: | + #!/usr/bin/python + from socket import * + + # TCP Port auf dem der Server lauschen soll... + serverPort = 17000 + # Server-Socket als Internet (INET) TCP (STREAM) erzeugen und an o.g. Port binden + serverSocket = socket(AF_INET,SOCK_STREAM) + serverSocket.bind(("",serverPort)) + serverSocket.listen(1) + downloadSize = raw_input("Download-Groesse: ") + print "TCP Server ist bereit fuer den Download..." + + # Endlosschleife + while 1: + # Eingehende Nachrichten akzeptieren und von Clients empfangen + connectionSocket, addr = serverSocket.accept() + # Bytes an Client zuruecksenden + connectionSocket.send("a" * int(downloadSize)) + # Verbindung schliessen + connectionSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/tcpdownload-client.py + content: | + #!/usr/bin/python + from socket import * + import time + + # Serveradresse und TCP Port auf den der Server hoert... + serverName = "10.0.0.30" + serverPort = 17000 + # Socket fuer IP (INET) und TCP (STREAM) konfigurieren + clientSocket = socket(AF_INET, SOCK_STREAM) + clientSocket.connect((serverName,serverPort)) + + # Antwort des Servers ausgeben + length = 0 + start = time.time() + while 1: + data = clientSocket.recv(1024) + if not data: + break + length += len(data) + elapsed = time.time() - start + print str(length) + " Bytes geladen in " + str(elapsed) + " secs (" + str(length / elapsed) + " bytes/s)" + raw_input("Fertig...") + + # Verbindung schliessen + clientSocket.close() + owner: root:root + permissions: '0777' +- path: /home/cisco/tcpdownload-server.py + content: | + #!/usr/bin/python + from socket import * + + # TCP Port auf dem der Server lauschen soll... + serverPort = 17000 + # Server-Socket als Internet (INET) TCP (STREAM) erzeugen und an o.g. Port binden + serverSocket = socket(AF_INET,SOCK_STREAM) + serverSocket.bind(("",serverPort)) + serverSocket.listen(1) + downloadSize = raw_input("Download-Groesse: ") + print "TCP Server ist bereit fuer den Download..." + + # Endlosschleife + while 1: + # Eingehende Nachrichten akzeptieren und von Clients empfangen + connectionSocket, addr = serverSocket.accept() + # Bytes an Client zuruecksenden + connectionSocket.send("a" * int(downloadSize)) + # Verbindung schliessen + connectionSocket.close() + owner: root:root + permissions: '0777' - + - + false