So erkennen Sie, ob ein SFTP -Upload mit JSCH erfolgreich war

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: So erkennen Sie, ob ein SFTP -Upload mit JSCH erfolgreich war

by Guest » 05 Feb 2025, 10:46

Leider gibt die Methode getExitstatus () immer -1 zurück, daher kann ich das nicht verwenden, um mir zu sagen, ob ein Upload eines Datei funktioniert oder nicht. Ich habe versucht, die GetInputStream () -Methode der Kanal Klasse zu verwenden, aber wenn ich versuchte, aus dem Eingabebetrieb zu lesen Obwohl die Isconnected und isclosed () falsch und wahr waren - was darauf hindeutet, dass der Kanal tatsächlich geschlossen war). Der folgende Code blockiert immer, nachdem ich versuche, ein Datenbyte aus dem Eingabestream zu lesen: < /p>

Code: Select all

public class Put {

public static void main(String[] args) throws IOException {

Session session = null;
Channel channel = null;
ChannelSftp channelSftp = null;
InputStream in = null;
JSch jsch = new JSch();

try {
jsch.setKnownHosts("known_hosts");
session = jsch.getSession("user", "host", 22);
session.setPassword("password");

session.connect();
channel = session.openChannel("sftp");
channel.setInputStream(null);
stdout = channel.getInputStream();

channel.connect();
channelSftp = (ChannelSftp)channel;
channelSftp.cd("/path/to/sftp");

channelSftp.put("/path/to/localfile", "/path/to/remotefile");

} catch (JSchException e) {
System.out.println(e.getMessage());
e.printStackTrace();
} catch (SftpException e) {
System.out.println(e.id);
System.out.println(e.getMessage());
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {

if(channelSftp != null && channelSftp.isConnected())channelSftp.exit();
if(channel != null && channel.isConnected()) channel.disconnect();
if(session != null && session.isConnected()) session.disconnect();
}

System.out.println("Channel is connected? " + channel.isConnected()); // returns false as i would expect
System.out.println("Channel is closed? " + channel.isClosed()); // returns true as i would expect
System.out.println(stdout.available()); // returns 0
System.out.println(stdout.read()); // code blocks here

}

}
< /code>

Ich nehme an, meine Fragen sind: < /p>

[list]
[*]  Warum ist mein Code mein Code Blockieren, wann immer ich versuche, aus dem Eingabestream zu lesen (obwohl der Kanal 
tatsächlich geschlossen ist)
[*] Wie ist der Weg, um zu sagen, ob eine Datei hochladen funktioniert oder nicht. Ich denke, wenn eine sftpexception geworfen wird, die nicht erfolgreich ist, kann ich annehmen, dass es erfolgreich war?
[/list]

Top