SCP und die Frage: Wie geh ich damit um?

Status
Nicht offen für weitere Antworten.

Kaladial

Bekanntes Mitglied
moin

ich ma wieder :)
also folgendes problem:
wir haben ne neue kamera und diese hat keinen FTP mehr als schnittstelle mit windows,
sondern nutzt nun SCP...

Nun will ich also dateien an die kamera senden dies aber mittels SCP

also hab ich n bissi gegooglet und bin auf die seite : http://www.jcraft.com/jsch/index.html
gestossen und hab mir da das entsprechende jar file runter geladen ...

leider hab ich auf der seite null komma nix anleitung gefunden wie ich nun damit in meinem java programm umgehen muss..

dafür brauch ich nun euch :)

also eingebunden ist das jar file...
aber wie kann ich :

- eine verbindung zu der kamera herstellen (ip is bekannt) ?
- wie kann ich verzeichnisse wechseln ?
- wie sind die befehle zum senden von dateien ?
- und wie schliesse ich die connection wieder?

also im groben per ftp sah das so aus:

Code:
		FTPClient client = new FTPClient();
		try{
			client.connect(camIP);
			client.login(GlobaleVariablen.cam_login_name, GlobaleVariablen.cam_login_pw);
			client.changeWorkingDirectory(GlobaleVariablen.cam_dir);
			client.setFileType(FTPClient.BINARY_FILE_TYPE); 
			client.storeFile(dateiname, new FileInputStream(new File(dateiname))); 
			client.disconnect();
		}catch(IOException iox){System.out.println(iox);}

^^ sowas brauch ich halt nun für SCP ...

mfg Kala
 

Kaladial

Bekanntes Mitglied
so ok ich hab jetzt das gepostete beispiel ausprobiert ...

das problem: in der funktion checkAck()

bekomm ich bei int b=in.read();

immer -1 raus ...
 

Kaladial

Bekanntes Mitglied
so also ich hab mal meinen code soweit angepasst wie ich ds brauche ...
das problem wie gesagt ist das checkAck immer eine -1 zurück gibt...
woran könnte das liegen ?

Code:
package testapp;

import com.jcraft.jsch.*;
import java.awt.*;
import javax.swing.*;
import java.io.*;

public class ScpTo{
	public static void main(String[] arg){
	    FileInputStream fis=null;
	    try{
			String lfile="test.txt";
			String user="root";
			String host="10.0.88.55";
			//String rfile="//mnt//nand//AVS3//test.txt";
			String rfile="//mnt//nand//AVS3//test.txt";
			//String rfile="test.txt";
			
			JSch jsch=new JSch();
			Session session=jsch.getSession(user, host, 22);
			
			// username and password will be given via UserInfo interface.
			UserInfo ui=new MyUserInfo();
			session.setUserInfo(ui);
			session.connect();
			
			System.out.println("session.isConnected:"+session.isConnected());
			
			// exec 'scp -t rfile' remotely
			String command="scp -p -t "+rfile;
			System.out.println("command:"+command);
			
			Channel channel=session.openChannel("exec");
			((ChannelExec)channel).setCommand(command);

			// get I/O streams for remote scp
			OutputStream out=channel.getOutputStream();
			InputStream in=channel.getInputStream();

			channel.connect();

			System.out.println("channel.isConnected:"+channel.isConnected());
			
			if(checkAck(in)!=0){
//				System.exit(0);
			}

			//send "C0644 filesize filename", where filename should not include '/'
			long filesize=(new File(lfile)).length();
			System.out.println("filesize:"+filesize);
			command="C0644 "+filesize+" ";
			if(lfile.lastIndexOf('/')>0){
				command+=lfile.substring(lfile.lastIndexOf('/')+1);
			}else{
				command+=lfile;
			}
			command+="\n";
			System.out.println("command:"+command);
			out.write(command.getBytes()); out.flush();
			if(checkAck(in)!=0){
	//			System.exit(0);
			}

			// send a content of lfile
			fis=new FileInputStream(lfile);
			byte[] buf=new byte[1024];
			while(true){
				int len=fis.read(buf, 0, buf.length);
				if(len<=0) break;
				out.write(buf, 0, len); //out.flush();
			}
			fis.close();
			fis=null;
			// send '\0'
			buf[0]=0; out.write(buf, 0, 1); out.flush();
			if(checkAck(in)!=0){
		//		System.exit(0);
			}
			out.close();

			channel.disconnect();
			session.disconnect();

			System.exit(0);
	    } catch(Exception e){
	    	System.out.println(e);
	    	try{if(fis!=null)fis.close();}catch(Exception ee){}
	    }
	}

	static int checkAck(InputStream in) throws IOException{
		int b=in.read();
		// b may be 0 for success,
		// 		    1 for error,
		//          2 for fatal error,
		//          -1
		
		System.out.println("b1:"+b);
		
		if(b==0) return b;
		if(b==-1) return 0;

		if(b==1 || b==2){
			StringBuffer sb=new StringBuffer();
			int c;
			do {
				c=in.read();
				sb.append((char)c);
			}
			while(c!='\n');
			if(b==1){ // error
				System.out.print(sb.toString());
			}
			if(b==2){ // fatal error
				System.out.print(sb.toString());
			}
		}
		System.out.println("b:"+b);
		return b;
	}

	public static class MyUserInfo implements UserInfo, UIKeyboardInteractive{
		String passwd="****";

		public String getPassword(){ return passwd; }
		public boolean promptYesNo(String str){	return true; }
		public String getPassphrase(){ return null; }
		public boolean promptPassphrase(String message){ return true; }
		public boolean promptPassword(String message){ return true; }
		public void showMessage(String message){}
		public String[] promptKeyboardInteractive(String destination,
                                              String name,
                                              String instruction,
                                              String[] prompt,
                                              boolean[] echo){
			String[] response=null;
			return response;
		}
	}
}

ausgabe:

session.isConnected:true
command:scp -p -t //mnt//nand//AVS3//test.txt
channel.isConnected:true
b1:-1
filesize:4
command:C0644 4 test.txt

pls help :)
mfg Kala
 

Kaladial

Bekanntes Mitglied
jaein ...

also auf der kamera läuft ein read only betriebssystem das ich aber per befehl in der shell (wenn ich mich per ubuntu -> ssh connecte remounten kann so das es RW rechte hat aber auch nur in dem verzeichnis: /mnt/nand/

daher hab ich ja bei dem rfile den pfad mit angegeben (ich weis aber nicht ob das so stimmt)
 
T

tuxedo

Gast
Ähm, Backslashes "\" musst du "Escapen". Aber normale "Slashes" musst du nicht doppelt schreiben.

Also sollte der Pfad so lauten:

Code:
String rfile="/mnt/nand/AVS3/test.txt";


- Alex
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Frage zum Keystore Netzwerkprogrammierung 21
E Socket Frage Netzwerkprogrammierung 6
T Frage bzgl. Socket-API Netzwerkprogrammierung 1
C Jetty 9 Non Blocking Handler Frage... Netzwerkprogrammierung 1
O log4j Appender Frage Netzwerkprogrammierung 6
T Frage zu Client-Server Applikation Netzwerkprogrammierung 2
M Theoretische Frage zu Server - Client Netzwerkprogrammierung 2
C Frage zu Threads & Server Netzwerkprogrammierung 4
P Eine etwas andere Frage: Sicherheit Netzwerkprogrammierung 5
M allgemeine Frage über Server-Client-Kommunikation Netzwerkprogrammierung 5
M allgemeine Frage zu einem Web Service Client Netzwerkprogrammierung 2
Q Frage zur Socketprogrammierung Netzwerkprogrammierung 12
D HTTP Frage zu Login & Session ID Netzwerkprogrammierung 5
D HTTP nochne frage zu http requests Netzwerkprogrammierung 6
D "Fileserver" Frage + Mit Java zugreifen Netzwerkprogrammierung 9
S Socket-Frage zu einem LAN-Spiel. Netzwerkprogrammierung 3
Helgon Socket Socket IP Frage + Tutorial/Bücher Netzwerkprogrammierung 5
C Webservice Frage Netzwerkprogrammierung 2
M RMI Code Frage: Netzwerkprogrammierung 4
C Frage zur Klasse DatagramPacket Netzwerkprogrammierung 2
S Einfache Server Frage Netzwerkprogrammierung 5
xDarkSunx Kleine Frage authentifizierung Netzwerkprogrammierung 13
G Frage zu Servlets und deren Objekte + Bilder in Servlets anzeigen? Netzwerkprogrammierung 11
H Input-/OutputStream Frage Netzwerkprogrammierung 6
N Frage zu JNDI Netzwerkprogrammierung 2
B Frage zu einer Lösung (RMI) Netzwerkprogrammierung 2
X FAQ Frage - Netzwerkgrundlagen - ServerSocket und Socket Netzwerkprogrammierung 4
G Netzwerk IP Frage Netzwerkprogrammierung 4
S NanoHTTPD Server frage Netzwerkprogrammierung 5
E einfache Frage: wie Fehler untersuchen mit Tomcat Netzwerkprogrammierung 5
E Einfache Frage zu servlets und netbeans 6.5 Netzwerkprogrammierung 41
N Frage/Problem mit RMI Netzwerkprogrammierung 3
Kr0e Frage zu SO_TIMEOUT Netzwerkprogrammierung 3
K Frage zum Verhalten von SocketChannel.write(.) Netzwerkprogrammierung 9
G Frage zu Serversocket-Beispiel aus der FAQ Netzwerkprogrammierung 17
A Frage zur Verschlüsselung mit CipherInputStream Netzwerkprogrammierung 7
H Frage zu RMI Netzwerkprogrammierung 4
5 Grundlegende Design-Frage zu Webservices Netzwerkprogrammierung 16
C Frage zur ipcam WVC54GC von linksys ? Netzwerkprogrammierung 1
ven000m Mittlere Wartezeit Frage Netzwerkprogrammierung 5
T Frage bei Irc Verbindung Netzwerkprogrammierung 10
ven000m Frage aus einer mündl. Prüfung - wer kennt die Antwort? Netzwerkprogrammierung 6
S Serveranfrage - allgemeine Frage Netzwerkprogrammierung 2
ven000m Thread Frage Netzwerkprogrammierung 11
D Frage: Buffered Reader --> Wie komm ich an die Daten (Byt Netzwerkprogrammierung 3
H Frage zur Performance Netzwerkprogrammierung 10
flashfactor Frage zu HTML-Response Netzwerkprogrammierung 4
S GEHT DAS? - Nur eine Frage! (Printer Port direkt ansteuern?) Netzwerkprogrammierung 4
K Frage zu Net Send Netzwerkprogrammierung 7
G Frage zu JNDI / RMI Netzwerkprogrammierung 4
A ServerSocket prinzipielle Frage Netzwerkprogrammierung 5
M generelle Frage zum Versenden Netzwerkprogrammierung 4
L Frage nach Socket Netzwerkprogrammierung 4
E frage zu streams Netzwerkprogrammierung 2
Luma Verschiedene Frage zu nem Netzwerkprog Netzwerkprogrammierung 6
G einfache Frage zu ServerSocket ... Netzwerkprogrammierung 5
K HTTP Mit Java HTML Codeauslesen um damit zu arbeiten Netzwerkprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben