Questo è il comando incapsulato che può essere eseguito nel provider di hosting gratuito OnWorks utilizzando una delle nostre molteplici workstation online gratuite come Ubuntu Online, Fedora Online, emulatore online Windows o emulatore online MAC OS
PROGRAMMA:
NOME
incapsulare: multiplexare diversi canali su un singolo socket con campionamento del remoto
elaborare lo stato di uscita e fornire la terminazione della conversazione senza chiudere il socket.
tubi di rete 4.2
SINOSSI
incapsulare --fd n [ --verboso ] [ --sottoproc [ --inf n[=sid]] [ --outfd n[=sid]] [
--duplex n[=sid]] [ --Duplex n[=sid]] [ --DUPLEX n[=sid]] [ --preferire-locale ] [
--prefer-remoto ] [ --solo-locale ] [ --solo-remoto ]] [ --cliente ] [ --server ]
-[#n][v][s[in][on][dn][ion][oin][l][r][L][R]] command args ...
DESCRIZIONE
incapsulare implementa il Session Control Protocol (SCP) in modo limitato.
incapsulare multiplex diversi canali virtuali su un singolo socket utilizzando SCP.
incapsulare trasmette lo stato di uscita del programma locale all'estremità remota tramite a
canale SCP riservato e riceve indietro lo stato di uscita remota. incapsulare fornisce
confini della conversazione senza chiudere il socket.
Le bandiere possono apparire in qualsiasi ordine. Il primo argomento che non è un flag è il comando to
deporre le uova (assumendo --sottoproc è specificato, un errore altrimenti).
VERSIONI
--fd n, -#n : specifica il descrittore del file del socket su cui eseguiremo il multiplexing del sottoprocesso
canali sopra. Questo argomento è obbligatorio
--verboso, -v : stampa informazioni aggiuntive (inclusa una nota sul copyright) su stderr.
--sottoproc, -s : genera un sottoprocesso. È necessario fornire a command che a args. Se ometti questo
bandiera, allora devi non è un fornire un command che a args. Se ometti questo flag, incapsulare
copierà l'input da stdin a un canale in uscita nel socket SCP-mux e lo copierà in
stdout da un canale in entrata nel socket con multiplexing SCP. Se ometti questo flag, tutto
i flag dei canali di ingresso e uscita sono illegali.
--inf n, -in : specifica un canale di ingresso. Se è presente un sottoprocesso, sarà in grado di farlo
leggere dal descrittore n. Se non è presente alcun sottoprocesso incapsulare leggerà dal suo
descrittore n (queste sono polarità opposte per il canale SCP).
--outfd n, -on : specifica un canale di uscita. Se è presente un sottoprocesso, sarà in grado di farlo
scrivere al descrittore n. Se non è presente alcun sottoprocesso incapsulare scriverà al suo descrittore
n (queste sono polarità opposte per il canale SCP).
--duplex n, -ion : specifica un canale bidirezionale. Il remoto incapsulare invierà il file
Pacchetto SCP SYN e il locale risponderà con un SYN per la stessa sessione. IL
il sottoprocesso sarà in grado di leggere e scrivere nel descrittore di file n. Il sottoprocesso dovrebbe utilizzare
, il calzino(1) programmare se deve chiudere in una direzione lasciando l'altra direzione
aperto.
--Duplex n, -dn : specifica un canale bidirezionale. IL --cliente fine del incapsulare
la connessione invia il pacchetto SCP SYN e --server risponde con un SYN per la stessa sessione.
Il sottoprocesso sarà in grado di leggere e scrivere nel descrittore di file n. Il sottoprocesso dovrebbe
Usa il calzino(1) programmare se si deve chiudere in una direzione lasciando l'altra
direzione aperta.
--DUPLEX n, -oin : specifica un canale bidirezionale. Il locale incapsulare invierà il file
Pacchetto SCP SYN e il remoto risponderà con un SYN per la stessa sessione. IL
il sottoprocesso sarà in grado di leggere e scrivere nel descrittore di file n. Il sottoprocesso dovrebbe utilizzare
, il calzino(1) programmare se deve chiudere in una direzione lasciando l'altra direzione
aperto.
Tutte le forme lunghe del canale bidirezionale hanno un optional =sid componente quello
può essere utilizzato per specificare l'ID sessione SCP. Questo non è molto utile quando ci si connette
incapsulare in un'altra istanza di se stesso, ma potrebbe essere utile quando ci si connette a un altro
pezzo di software che implementa SCP.
--preferire-locale, -l : se sia il sottoprocesso remoto che quello locale escono con un valore diverso da zero
codici (errati), incapsulare uscirà con lo stesso codice del sottoprocesso locale. Si
is , il predefinito.
--prefer-remoto, -r : se sia il sottoprocesso remoto che quello locale escono con un valore diverso da zero
codici (errati), incapsulare uscirà con lo stesso codice del sottoprocesso remoto.
--solo-locale, -L : incapsulare esce con lo stato locale e ignora lo stato remoto.
--solo-remoto, -R : incapsulare esce con lo stato remoto e ignora lo stato locale.
SESSIONE ID E SOTTOPROCESSO CANALI
Quando si specificano i canali per il sottoprocesso, l'ordine dei flag è molto importante.
Ogni bandiera al locale incapsulare deve avere un flag corrispondente sul telecomando
incapsulare cioè nella stessa identica posizione (nella lista dei canali). Il descrittore
non è necessario che i numeri corrispondano, ma lo è la posizione e il tipo di ciascun canale.
Un fattore purtroppo complicante è il flusso di dati implicito --inf che a --outfd sono
diverso quando si specifica un sottoprocesso.
Locale Remoto
--inf con sottoproc --outfd con sottoproc
--inf con sottoproc --inf
--inf --inf con sottoproc
--inf --outfd
--outfd con sottoproc --inf con sottoproc
--outfd con sottoproc --outfd
--outfd --outfd con sottoproc
--outfd --inf
--duplex --DUPLEX
--Duplex --Duplex
--DUPLEX --duplex
DESTRA:
l$ incapsula --infd 0 --duplex 5
r$ incapsula --outfd 1 --DUPLEX 5
SBAGLIATO:
l$ incapsula --infd 0 --duplex 5
r$ incapsula --outfd 1 --duplex 5
--duplex deve avere un corrispondente --DUPLEX all'estremità remota.
l$ incapsula --infd 0 --duplex 5
r$ incapsula --DUPLEX 5 --outfd 1
--inf deve avere un corrispondente --outfd all'estremità remota. È fuori servizio e il
i canali verranno allocati in modo errato causando errori di protocollo.
Se comprendi il codice sorgente di incapsulare, puoi violare queste linee guida, ma
non è necessario, soggetto a errori e sconsiderato; inoltre, non capisci davvero il
codice sorgente. Non farlo.
CLIENTE -VS- SERVER
L'SCP ha una polarità implicita. Un'estremità è il server e l'altra estremità è il client.
È possibile specificare quale fine utilizzare --cliente che a --server. Se non lo specifichi
uno, allora incapsulare confronterà gli indirizzi di entrambe le estremità del socket (specificato
con --fd) e utilizzare un algoritmo deterministico per sceglierne uno come server e l'altro come server
il cliente. Se l'indirizzo remoto della presa non corrisponde al telecomando
incapsulare (ad esempio, i pacchetti vengono inoltrati attraverso un gateway collegato, gli indirizzi
vengono mascherati o altrimenti percepiti in modo incoerente dalle due estremità).
questo algoritmo ha buone probabilità di "fallire" e di assegnare entrambi come server o entrambi
essere cliente.
L'unica volta che dovresti mai lasciarlo incapsulare scegliere tra client e server è in
situazioni interattive. È molto probabile che un sistema software sia stato costruito attorno incapsulare
verrà riutilizzato in una situazione in cui l'assegnazione automatica della polarità fallisce.
ESEMPI
Ecco un semplice demone di trasferimento file:
server$ faucet 3001 --once --fd3
sh -c' mentre ~/src/netpipes4.0/encapsulate --fd3-so5i4
sh -c "fnome=`cat 0<&4`; echo \$fnome; cat < \$fnome 1>&5";
fai il vero; Fatto'
client$ tubo server 3001 --retry 10 --delay 1 --fd3
sh -c 'mentre leggi fname; Fare
~/src/netpipes4.0/encapsulate --fd3-si4o5
sh -c "echo $fnome 1>&5; exec 5>&-; cat 0<&4"
|| rottura; Fatto'
Basta digitare il nome del file che desideri recuperare nel tubo e premere Invio. Esso
verrà scaricato su stdout. Ripeti finché non sei illuminato o annoiato.
RISOLUZIONE DEI PROBLEMI
Hai specificato? --cliente che a --server correttamente? Un lato dovrebbe essere il server, l'altro lato
dovrebbe essere cliente. Se li specifichi entrambi come server o entrambi come client, hai creato un file
errore. Non fare affidamento sul rilevamento automatico della polarità. Mentre teoricamente è a
algoritmo molto buono, si lascia ingannare molto facilmente.
Esegui tutte le assegnazioni dei canali (--inf et al) corrispondono? Se sbagli,
incapsulare impazzirà e ti gocciolerà sporco sulle scarpe.
Per evitare situazioni di stallo, assicurati di chiudere i canali quando non ne hai bisogno
più. Utilizzare l'operatore di reindirizzamento >&- in sh o bash. Assicurati di chiuderlo completamente
anche dei processi in background.
Impossibile leggere stdin da un processo in background con & ? Bash chiude il file
descrittore 0 per qualsiasi sottoprocesso in background (ad esempio (command&) ). Puoi prendere
attorno a questo copiando 0 su un altro descrittore e quindi copiandolo nuovamente all'interno di
processo in background.
( ( cat 0<&3 ) & ) 3<&0
Utilizzare l'incapsulamento online utilizzando i servizi onworks.net