Zapis do pliku za pomocą ssh

0

Witam,

Napisałem taki kod, który dopisuje tekst do istniejącego pliku na serwerze:

import java.io.InputStreamReader;

public class Create {
    public static void main(String args[]) {
    	String command="echo 'test'|ssh 192.168.245.135 \"cat >> /home/ubuntu/Desktop/OwnRule.txt\"";
        String s;
        Process p;
        try {
            p = Runtime.getRuntime().exec(command);
            BufferedReader br = new BufferedReader(
                new InputStreamReader(p.getInputStream()));
            while ((s = br.readLine()) != null)
                System.out.println("line: " + s);
            p.waitFor();
            System.out.println ("exit: " + p.exitValue());
            p.destroy();
        } catch (Exception e) {}
    }
}

O ile sama komenda jest poprawna (z poziomu linii poleceń działa i tekst się dodaje), to po uruchomieniu kodu w javie niestety linia nie jest dopisywana do pliku.

2

String command="echo 'test'|ssh 192.168.245.135 \"cat >> /home/ubuntu/Desktop/OwnRule.txt\""; nie odpalisz czegoś takiego przez Runtime.exec bo twoja "komenda" używa rozszerzeń shella. Jeśli w ogóle to musiałbyś robić jakieś bash -c "..." żeby twoje komendy odpaliły się w subshellu basha.

0

Dlaczego robisz to przez odpalanie komend w powłoce, a nie korzystając z I/O JDK? 🤔

1 użytkowników online, w tym zalogowanych: 0, gości: 1