Command passeret via SSH fra Java får skåret ater 900 tegn i Windows

Indlæg af Hanne Mølgaard Plasc

Problem



Jeg deltog i et projekt, der bruger Java til at udføre SSH-kommandoer, jeg forsøger at køre en testpakke på localhost. Korte kommandoer udføres ordentligt. Det er dog en udfordring at køre længere kommandoer. En SSH-kommando er bygget, det ser ud som dette:


ssh -v username@localhost bash -c "long-command"


Hvor langkommando handler om 2000 tegn i længden - den indeholder en liste over kodede værdier, og jeg kan ikke ændre denne kendsgerning uden større ændringer i projektets arkitektur. I Java langkommando afspejles korrekt og ukomplet, så vidt jeg kan tjekke ved hjælp af debugger, sendes den til ProcessBuilder .


debug1: Sending command: bash -c long-command-cut-in-half


Kommandoens længde (målt fra startpunktet 'bash') kan kun nå 900 tegn. Alt, der går forbi dette nummer, går tabt, hvilket gør kommandoen ugyldig.


Jeg bruger Bitvise SSH Server på Windows, ssh.exe kommer fra OpenSSH installeret som en valgfri funktion i Windows 10 - resultaterne var de samme, når du bruger ssh.exe leveret med Git - og har Cygwin installeret.


Kommandoen skal helt sikkert være kortere, men den overstiger ikke OS-grænse. Jeg har længe søgt et svar: Hvorfor sker det?

Bedste reference