Dit is de ingekapselde opdracht die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator
PROGRAMMA:
NAAM
inkapselen - meerdere kanalen multiplexen via een enkele socket met sampling van de afstandsbediening
procesuitgangsstatus en zorg voor gespreksbeëindiging zonder de socket te sluiten.
netpijpen 4.2
KORTE INHOUD
ingekapseld --fd n [ --uitgebreid ] [ --subproces [ --infd n[=sid] ] [ --uitfd n[=sid] ] [
--dubbelzijdig n[=sid] ] [ --Duplex n[=sid] ] [ --DUPLEX n[=sid] ] [ --voorkeur-lokaal ] [
--voorkeur-op afstand ] [ --alleen lokaal ] [ --alleen op afstand ] ] [ --cliënt ] [ --server ]
-[#n][v][s[in][on][dn][ion][oin][l][r][L][R]] commando betoogt ...
PRODUCTBESCHRIJVING
ingekapseld implementeert het Session Control Protocol (SCP) op beperkte wijze.
ingekapseld multiplext verschillende virtuele kanalen via een enkele socket met behulp van SCP.
ingekapseld verzendt de uitgangsstatus van het lokale programma naar het externe uiteinde via a
gereserveerd SCP-kanaal en ontvangt de externe exit-status terug. ingekapseld biedt
gespreksgrenzen zonder de socket te sluiten.
Vlaggen kunnen in willekeurige volgorde verschijnen. Het eerste argument dat geen vlag is, is het commando to
spawnen (ervan uitgaande dat --subproces is opgegeven, anders een fout).
OPTIES
--fd n, -#n : specificeer de bestandsdescriptor van de socket die we gaan multiplexen
kanalen voorbij. Dit argument is vereist
--uitgebreid, -v : Druk extra informatie (inclusief een copyrightvermelding) af naar stderr.
--subproces, -s : een subproces voortbrengen. U moet een commando en betoogt. Als je dit achterwege laat
vlag, dan moet je dat doen niet leveren een commando en betoogt. Als u deze vlag weglaat, ingekapseld
zal de invoer van stdin naar een uitgaand kanaal in de SCP-muxed socket kopiëren en ernaar kopiëren
stdout van een binnenkomend kanaal in de SCP-muxed socket. Als u deze vlag weglaat, zal alles
de invoer- en uitvoerkanaalvlaggen zijn illegaal.
--infd n, -in : specificeer een ingangskanaal. Als er een subproces is, kan dit wel
lezen uit de descriptor n. Als er geen subproces is ingekapseld zal voorlezen uit zijn
descriptor n (dit zijn tegengestelde polariteiten voor het SCP-kanaal).
--uitfd n, -on : specificeer een uitgangskanaal. Als er een subproces is, kan dit wel
schrijf naar de descriptor n. Als er geen subproces is ingekapseld zal naar de descriptor schrijven
n (dit zijn tegengestelde polariteiten voor het SCP-kanaal).
--dubbelzijdig n, -ion : specificeer een bidirectioneel kanaal. De afstandsbediening ingekapseld zal de sturen
SCP SYN-pakket, en de lokale gebruiker zal reageren met een SYN voor dezelfde sessie. De
subproces kan de bestandsdescriptor lezen en schrijven n. Het subproces moet gebruiken
the sockdown(1) programmeren of het de ene richting moet sluiten terwijl het de andere richting verlaat
geopend.
--Duplex n, -dn : specificeer een bidirectioneel kanaal. De --cliënt einde van de ingekapseld
verbinding verzendt het SCP SYN-pakket en --server reageert met een SYN voor dezelfde sessie.
Het subproces kan de bestandsdescriptor lezen en ernaar schrijven n. Het subproces moet
Gebruik de sockdown(1) programmeren of het de ene richting moet sluiten terwijl het de andere verlaat
richting geopend.
--DUPLEX n, -Oin : specificeer een bidirectioneel kanaal. De lokale ingekapseld zal de sturen
SCP SYN-pakket en de afstandsbediening reageert met een SYN voor dezelfde sessie. De
subproces kan de bestandsdescriptor lezen en schrijven n. Het subproces moet gebruiken
the sockdown(1) programmeren of het de ene richting moet sluiten terwijl het de andere richting verlaat
geopend.
Alle lange vormen van het bidirectionele kanaal hebben een optioneel =sid onderdeel dat
kan worden gebruikt om de SCP-sessie-ID op te geven. Dit is niet erg handig bij het aansluiten
inkapselen in een ander exemplaar van zichzelf, maar kan handig zijn bij het verbinden met een ander exemplaar
stukje software dat SCP implementeert.
--voorkeur-lokaal, -l : als zowel de externe als de lokale subprocessen eindigen met een niet-nul
(foutieve) codes, ingekapseld wordt afgesloten met dezelfde code als het lokale subproces. Deze
is the standaard.
--voorkeur-op afstand, -r : als zowel de externe als de lokale subprocessen eindigen met een niet-nul
(foutieve) codes, ingekapseld wordt afgesloten met dezelfde code als het externe subproces.
--alleen lokaal, -L : ingekapseld sluit af met de lokale status en negeert de externe status.
--alleen op afstand, -R : ingekapseld sluit af met de externe status en negeert de lokale status.
SESSION IDs EN SUBPROCES KANALEN
Bij het specificeren van kanalen voor het subproces is de volgorde van de vlaggen erg belangrijk.
Elke vlag voor de lokale bevolking ingekapseld moet een overeenkomstige vlag op de afstandsbediening hebben
ingekapseld die zich op exact dezelfde positie bevindt (in de lijst met zenders). De beschrijving
nummers hoeven niet overeen te komen, maar de positie en het type van elk kanaal moeten dat wel doen.
Een betreurenswaardig complicerende factor is dat de gegevensstroom wordt geĂŻmpliceerd door --infd en --uitfd zijn
anders als u een subproces opgeeft.
Lokale afstandsbediening
--infd met subproc --uitfd met subproc
--infd met subproc --infd
--infd --infd met subproc
--infd --uitfd
--uitfd met subproc --infd met subproc
--uitfd met subproc --uitfd
--uitfd --uitfd met subproc
--uitfd --infd
--dubbelzijdig --DUPLEX
--Duplex --Duplex
--DUPLEX --dubbelzijdig
RECHTSAF:
l$ kapselt --infd 0 --duplex 5 in
r$ kapselt --outfd 1 --DUPLEX 5 in
MIS:
l$ kapselt --infd 0 --duplex 5 in
r$ kapselt --outfd 1 --duplex 5 in
--dubbelzijdig moet een overeenkomstige hebben --DUPLEX aan de afgelegen kant.
l$ kapselt --infd 0 --duplex 5 in
r$ kapselt --DUPLEX 5 --outfd 1 in
--infd moet een overeenkomstige hebben --uitfd aan de afgelegen kant. Het is buiten gebruik en de
kanalen worden verkeerd toegewezen, wat tot protocolfouten leidt.
Als u de broncode van ingekapseld, u kunt deze richtlijnen schenden, maar
het is onnodig, foutgevoelig en onverstandig; bovendien begrijp je het niet echt
broncode. Doe het niet.
CLIĂ‹NT -VS- SERVER
Het SCP kent een impliciete polariteit. Het ene uiteinde is de server en het andere uiteinde is de client.
U kunt opgeven welk uiteinde welk gebruik is --cliënt en --server. Als u dit niet opgeeft
Ă©Ă©n dan ingekapseld vergelijkt de adressen van beide uiteinden van de socket (opgegeven
met --fd) en gebruik een deterministisch algoritme om er Ă©Ă©n als server en Ă©Ă©n te kiezen
de cliënt. Als het externe adres van het stopcontact niet overeenkomt met dat van de afstandsbediening
ingekapseld (de pakketten worden bijvoorbeeld doorgestuurd via een aangesloten gateway, de adressen
worden gemaskeerd, of worden op een andere manier inconsistent waargenomen door de twee partijen).
dit algoritme heeft een goede kans om te "falen" en beide toe te wijzen als server of beide
cliënt zijn.
De enige keer dat je dat ooit zou moeten toestaan ingekapseld kiezen tussen client en server is in
interactieve situaties. Het is zeer waarschijnlijk dat er een softwaresysteem omheen is gebouwd ingekapseld
zal worden hergebruikt in een situatie waarin de automatische polariteitstoewijzing mislukt.
Voorbeelden
Hier is een eenvoudige daemon voor bestandsoverdracht:
server$ kraan 3001 --eenmaal --fd3 \
sh -c 'terwijl ~/src/netpipes4.0/inkapselen --fd 3 -so5i4 \
sh -c "fnaam=`cat 0<&4`; echo \$fnaam; cat < \$fnaam 1>&5"; \
doe waar; klaar'
client$ slangserver 3001 --opnieuw proberen 10 --vertraging 1 --fd3 \
sh -c 'tijdens het lezen van fname; Doen \
~/src/netpipes4.0/inkapselen --fd 3 -si4o5 \
sh -c "echo $fname 1>&5; exec 5>&-; cat 0<&4" \
|| pauze; klaar'
Typ gewoon de naam van het bestand dat u wilt ophalen in de slang en druk op Return. Het
zal naar stdout worden gedumpt. Herhaal dit totdat je verlicht of verveeld bent.
PROBLEMEN OPLOSSEN
Heb je gespecificeerd --cliënt en --server op de juiste manier? De ene kant moet server zijn, de andere kant
cliënt zou moeten zijn. Als u ze allebei als server of beide als client opgeeft, heeft u een
fout. Vertrouw niet op de automatische polariteitsdetectie. Hoewel het theoretisch gezien een
zeer goed algoritme, het wordt heel gemakkelijk voor de gek gehouden.
Voer al uw kanaaltoewijzingen uit (--infd et al) overeenkomen? Als je deze verkeerd begrijpt,
ingekapseld zal in paniek raken en spoog over je schoenen druppelen.
Om een ​​impasse te voorkomen, zorg ervoor dat u kanalen sluit wanneer u ze niet nodig heeft
meer. Gebruik de >&- omleidingsoperator in sh of bash. Zorg ervoor dat je hem helemaal afsluit
ook van de achtergrondprocessen.
Kan stdin niet lezen van een proces dat op de achtergrond is geplaatst met &? Bash sluit bestand
descriptor 0 voor elk subproces met een achtergrond (bijvoorbeeld (command&) ). Je kan krijgen
hieromheen door 0 naar een andere descriptor te kopiëren en deze vervolgens terug te kopiëren binnen de
achtergrondproces.
( ( kat 0<&3 ) & ) 3<&0
Gebruik online inkapselen met behulp van onworks.net-services