Ho trovato this e lo sto usando come base, ma non funzionava correttamente. Il mio obiettivo è anche quello di trattarlo come un pacchetto anziché come un'utilità della riga di comando, quindi le mie modifiche al codice lo rifletteranno.Implementazione Netcat in Python
class Netcat:
def __init__(self, hostname, port):
self.hostname = hostname
self.port = port
def send(self, content):
self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
self.socket.connect((self.hostname, self.port))
self.socket.setblocking(0)
result = '';
read_ready, write_ready, in_error = select.select([self.socket], [], [self.socket], 5)
if(self.socket.sendall(content) != None):
return
while(1):
buffer = ''
try:
buffer = self.socket.recv(128)
while(buffer != ''):
result += buffer
try:
buffer = self.socket.recv(128)
except socket.error as err:
print (err, type(err))
buffer = ''
if(buffer == ''):
break
except socket.error as err:
print (err, type(err))
if(buffer == ''):
break
return result
Quando mando un comando di base al dispositivo, esso restituisce i seguenti.
50PMA-019 Connection Open
Atten #1 = 63dB
mio codice legge la prima linea, ma poi ho un errore che dice che la connessione è temporaneamente non disponibile e non ottiene la seconda linea. Se lo cambio al blocco, blocca e non ritorna mai. qualche idea?
Aggiungendo la linea di spegnimento al mio codice originale ha funzionato e prendo in prestito dal codice per ridurre il mio codice. – unholysampler
Ho il problema dove il mio mac os non invia pacchetti fino a quando non chiudo la connessione. C'è un modo per aggirare perché la connessione che ho non può essere fatta di nuovo. –
Bob, dovresti considerare di fare clic su Fai una domanda e chiedendo questa, se non l'hai già fatto. –