Προς το περιεχόμενο

ερωτηση για sockets -port forwading με python


Hamurabi

Προτεινόμενες αναρτήσεις

1. Τι είναι το port forwarding;
Είναι η δυνατότητα αν ένας server ακούει το pc σου στην θύρα πχ. 5567 ο router σου να ακούει μια άλλη θυρα που έχει NAT πχ 5589 να προωθεί την κίνησή σου στην 5589 στην 5567.

Δλδ ας υποθέσουμε ότι το pc σου έχει την IP 192.168.2.10 και ο server ακούσει στην θύρα 5567 αν ορίσεις στο router σου την θύρα 5589 όποια κίνηση από το Internet  απ την θύρα 5589 θα πάει στην 192.168.2.10.

 

2. Τι θες να δεις με τα socket;

Θες να ανοίξεις ένα socker που ακούσει σε μια θύρα και να στέλνεις κίνηση; Μπορείς να παίξεις είτε με localhost είτε με VM είτε με docker. Εναλλακτικά μπορείς να παίζεις ο server να ακούει Lan και ένα άλλο pc στο ίδιο lan να την λαμβάνει.

 

Και στις 2 περιπτώσεις ΔΕΝ θες port forwarding.

 

Το πρόβλημά σου είναι τι σενάριο θες να εκτελέσεις. Όρισε ένα σενάριο πρώτα και μετά δες τι θες. Αν θες να σκαλίσεις απλά γράψε κώδικα, δες πως παίζεις σκάλωσε και περίγραψε το σκάλωμά σου.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

  • Απαντ. 31
  • Δημ.
  • Τελ. απάντηση

Συχνή συμμετοχή στο θέμα

εχω την εξης ασκηση:

εχω 5 πελατες που τους εχω πουλησει network printers. O καθε network printer ειναι στο τοπικο τους δικτυο με σταθερη ΙΡ.

Θελω να μπορω απο το γραφειο μου να μπορω να συνδεθω στο μηχανημα του καθε πελατη,στο web interface του network printer, ωστε να βλεπω ink levels, και διαφορα προβληματα που μπορει να εχουν ωστε να γλυτωσω χρονο να απασχολω προσωπικο να μιλαει ωρες στα τηλεφωνα για να βγαλουμε ακρη για διαφορα θεματα που μπορω να δω απευθειας και να γλυτωσουμε χρονο, Οι πελατες δεν μου επιτρεπουν να κανω port forward ή οποιαδηποτε ρυθμιση στο router τους. 

Aυτο που σκεφτομουν ως τωρα ειναι ν α φτιαξω με Python server-client tcp sockets οπου ο καθε πελατης θα εχει ενα server που θα "ακουει" και εγω σαν client απτο γραφειο μου θα συνδεομαι σε οποιον θελω ωστε να μπω sto web interface του εκτυπωτη και να δω οτι χρειαζεται.  σκεφτομουνα να βαλω στον κωδικα του server (πελατη) να τρεχει το ngrok me την ΙΡ του εκτυπωτη και ενα πορτ (tcp hole punch) kai na μου στελνει σε ενα message στον client το url του ngrok opoυ anoigontaσ το link θα μπαινω απευθειας στο web interface του printer.

μπορει να γινει αυτο ΧΩΡΙΣ να χρειαζεται port forwarding στο router του πελατη(server)?

αν υπαρχει αλλη μεθοδος πιο ευκολη για να πετυχω αυτο που θελω σας ακουω...

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

καλησπερα  

Η συνδεση προς  το εσωτερικο σε ενα Δικτυο φιλτραρεται ενω  η  κινηση προς τα εξω  οχι  .

Φαντασου   οτι το κομματι του (Client)  που τρεχει στο αλλο  μηχανημα  περναει και  συνδεεται με το  δικο σου(Server)  το  οποιο περιμενει (listening mode )

Σχεδιασα ενα μικρο παραδειγματακι   .Υπαρχουν 4 Client τα οποια  δουλευουν με την ιδια λογικη .

 

simpple example.jpg

Επεξ/σία από ntaryl
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Αρα πρεπει να βρω τροπο να στελνει συνδεται το μηχανημα του πελατη με το  δικτυο μου. 

Μια λεπτομέρεια ειναι οτι προκειται για 30 πελατες. 

Αρα πρεπςι ειτε 30 μηχανηματα να συνδέονται σχεδον ταυτόχρονα μεντο δικο μου (πραγνα που δς ξερω ποσο ευκολο ειναι προγραμματιστικα) ειτε ολοι οι πελάτες να συνδεονται με ενα virtual δίκτυο k εγω μετα να συνδεομαι με όποιον θελω απολους μεσω αυτου του δικτυου. 

Αυτα φαντάζομαι με τις λίγες γνώσεις μου. 

Οποιος μπορει να βοηθησει ειμαι ολος αφτιά.

ευχαριστω

Επεξ/σία από Hamurabi
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

αληθεια... αν εγω ημουν ο σερβερ και εκανα τους πελατες μου σαν clients να συνδεονται σε μενα...

αλλαζει κατι στο προγραμμα αν συνδεονται 30 clients ston server αποτι αν συνδεεται 1 client?

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Τώρα που το διάβασα  μπορείς να κάνεις ανάστροφο TCP/HTTP δλδ το script να είναι ο client που να συνδέετε σε δικό  σου  server. Το κοπανάς σε ένα rpi και το βάζεις στο lan του πελάτη.

Για να δεις ink level κοίτα το: https://stackoverflow.com/a/12128931
πρακτικά θες ένα daemon που ανα x interval να κάνει report σε  εσένα μέσω API που θα αποθηκεύεις σε βάση. Μετά εσύ απλά κοιτάς την βάση σου και ξέρεις τι παίζει με τον πελάτη.

ένα rpi σου αρκεί γι αυτό.

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Εχεις καμια ιδέα αν θα ειναι κλειστος ο υπολογιστής που ειναι στο δικτυο με τον εκτυπωτη τι μπορει να γινει; 

Υπάρχει καποια λύση ωστε να περνω απευθείας δεδομενα απτον εκτυπωτη στο δικο μου απομακρυσμένο μηχανημα; 

Ευχαριστώ για το χρόνο σου 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημοσ. (επεξεργασμένο)

Στο stackoverflow link που έβαλα έχει κάποιες προσεγγίσεις.

Γενικά οι δρόμοι είναι 2:

  • Ανά μοντέλο εκτυπωτή να κάνεις scrape τα δεδομένα απο το web panel
  • SNMP/MIB

Δεν σε ενδιαφέρει απλά ένα raspoberry ή ενα arduino με ethernet shield που να έχει μόνο τα βασικά και να διαβάζεις το status των εκτυπωτών και να στο εμφανίζει. Έτσι δεν σε ενδιαφέρει αν είναι κλειστός ο Η/Υ έχεις το δικό σου μηχάνημα. Ακόμα και ένα παλιό router με το script που κάνει.

 

Άλλη λύση είναι VPN server που να είναι σε ένα subnet printer-only με strict firewall rules, συνδέεσε σε αυτό και διαβάζεις το status!

Επεξ/σία από PC_MAGAS
  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

καλησπερα  

Μια απλη υλοποιηση  

Φτιαξε ενα προγραμματακι(client)  το οποιο  θα εγκατασταθει  στο μηχανημα με τον Εκτυπωτη   ..Χρειαζεσαι να εκκινει με το μηχανημα και να χρησιμοποιει socket για να συνδεθει στο αλλο  κομματι  που θα το τρεχεις εσυ στο δικο σου μηχανημα(Server)  .Θα χρειαστει επισης να δημιουργησεις και μια συναρτηση(π.χ GetInkData)   που θα διαβαζει τα δεδομενα απο τα μελανια  και θα τα αποθηκευει σε μια μεταβλητη .Η συναρτηση θα πρεπει να τα ελεγχει  καθε Χ λεπτα  (Οσο χρονο σε ικανοποιει)

Το δικο σου κομματι(Server) Θα εχει ενα Socket που θα κανει Listening στην  πορτα που θελεις και οταν θα δεχεται συνδεση  θα μεταβιβαζει την συνδεση στο δευτερο Socket .Ετσι το πρωτο θα μενει παντα σε listening  mode  .Για να εξυπηρετησει και τον επομενο

Στην περιπτωση  με τους 30 πελατες τοτε  θα λειτουργησει  ως εξης  

Socket1 listen

Δεχεται συνδεση  απο Πελατης 1 τοτε μεταβιβαζει το socket ID στο  Socket 2 

Ελευθερωνετε το Socket 1   μπαινει σε   listening  .

Περιμενει τον επομενο Πελατη και  ου το καθε εξης  .

Με το που συνδεθει ο πελατης αυτοματα στελνει  τα πρωτα δεδομενα (αποθηκευμενα στην μεταβλητη) Οποτε ανανεωνονται και εχει αλλαγες μπορεις να τα στελνει στο μηχανημα σου (Server) Η μπορεις εσυ απο τον Server οποτε θελεις να ζητας ενημερωση  .

 

 

 

 

  • Like 1
Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

και σε περιπτωση που το pc poy einai στο δικτυο με τον εκτυπωτη  ειναι κλειστο για οποιοδηποτε λογο τι κανω;

υπαρχει εναλλακτικη?

εντωμεταξυ δε μπορω με τιποτα να βρω πως θα συνδεθω με vpn μονο στον εκτυπωτη ..

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Στις 5/3/2022 στις 4:52 ΜΜ, Hamurabi είπε

και σε περιπτωση που το pc poy einai στο δικτυο με τον εκτυπωτη  ειναι κλειστο για οποιοδηποτε λογο τι κανω;

υπαρχει εναλλακτικη?

εντωμεταξυ δε μπορω με τιποτα να βρω πως θα συνδεθω με vpn μονο στον εκτυπωτη ..

To subnet έχει VPN server?

 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επειδη δε βλέπω ναντο καταφέρνω. 

 Σκέφτηκα κατι αλλο... 

Αν φτιαξω μια βαση δεδομενων sql ή excel αρχείο ή κατι τετοιο, το οποίο θαναι σε καποιο server.... 

Και ο καθε πελατης που έχει τα μηχανήματα, θαχει ενα python προγραμμα που θα γραψω το οποιο θα περνει τιςπληρoφοριες που θελω μεσω snmp και θα ανανεώνει τη βαση δεδομενων /excel/whatever καθε μια ωρα ας πουμε. 

Πως φαίνεται σαν ιδεα αυτο; 

Δεδομένου οτι περιμενω ενα raspberry pi σε λιγες μερες και θα φτιαξω δικο μου server εκει, πως λέτε να το κανω; 

Ευχαριστω 

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Επισκέπτης

Ρε bro έχεις καταλάβει ποιά είναι τα προβλήματα που χρειάζεται να λύσεις; Οταν καταλήξεις στο ποιά είναι τα προβλήματα και ποιά βήματα πρέπει να κάνεις για να αποκτήσεις πρόσβαση στην πληροφορία με manual βήματα, ξεκίνας να βρίσκεις λύσεις σε κάθε ένα και στο τέλος θα έχεις μια συνολική λύση. 

Οταν έχεις την συνολική λύση μπορείς να επεκταθείς στο automation του όλου πράγματος.

Με το να λες πως θα σηκώσεις raspberry, masberry και οτι στον διάκο άλλο θέλεις, 3-4 βάσεις δεδομένων, 2-3 excel και 5-6 server για το γούρι, δεν θα βγάλεις άκρη ποτέ.

1. ένα proof of concept tool με επικοινωνία SNMP έχεις φτιάξει; ξέρεις τι queries πρέπει να κάνεις για να πάρεις τα στοιχεία που θέλεις από έναν εκτυπωτή;

2. οταν με το καλό έχεις το tool μπορείς π.χ. να χτίσεις ένα script που θα καλεί αυτό το tool για κάθε εκτυπωτή που σε ενδιαφέρει (με schedule, με cron, με δέηση στον ύψιστο κπλ) και μετά π.χ. μπορεί να στέλνει το output κάθε εκτέλεσης για αποθήκευση π.χ. σε ένα ftp

3. πρόσβαση στο π.χ ftp έχεις, κατεβάζεις τα αρχεία και τα βλέπεις με το μάτι. Στο μέλλον φτιάχνεις parser που μπορεί να κάνει και παραγγελίες αμά λάχει να ούμε

Βάλτα κάτω, σκέψου και θα το βρεις, όλα μαζί δεν γίνονται

Συνδέστε για να σχολιάσετε
Κοινοποίηση σε άλλες σελίδες

Δημιουργήστε ένα λογαριασμό ή συνδεθείτε για να σχολιάσετε

Πρέπει να είστε μέλος για να αφήσετε σχόλιο

Δημιουργία λογαριασμού

Εγγραφείτε με νέο λογαριασμό στην κοινότητα μας. Είναι πανεύκολο!

Δημιουργία νέου λογαριασμού

Σύνδεση

Έχετε ήδη λογαριασμό; Συνδεθείτε εδώ.

Συνδεθείτε τώρα

  • Δημιουργία νέου...