Мне нужно передать видеофайл с моей локальной машины на облачный сервер EC2 с помощью программы Java. Для этого я использую библиотеку JSCH.
Пока я могу подключиться к серверу EC2 и выполнять на нем основные команды. Ниже приведен код:
import com.jcraft.jsch.*;
import java.io.*;
import java.io.IOException;
public class EC2
{
public static void main(String[] args) throws JSchException, IOException, InterruptedException
{
JSch jsch=new JSch();
jsch.addIdentity("yyyy.pem");
jsch.setConfig("StrictHostKeyChecking", "no");
//enter your own EC2 instance IP here
Session session=jsch.getSession("ec2-user", "xx.xxx.xxx.xxx", 22);
session.connect();
//run stuff
String command = "whoami;hostname";
Channel channel = session.openChannel("exec");
((ChannelExec) channel).setCommand(command);
((ChannelExec) channel).setErrStream(System.err);
channel.connect();
InputStream input = channel.getInputStream();
//start reading the input from the executed commands on the shell
byte[] tmp = new byte[1024];
while (true)
{
while (input.available() > 0)
{
int i = input.read(tmp, 0, 1024);
if (i < 0) break;
System.out.println(new String(tmp, 0, i));
}
if (channel.isClosed())
{
System.out.println("exit-status: " + channel.getExitStatus());
break;
}
Thread.sleep(1000);
}
channel.disconnect();
session.disconnect();
}
}
Теперь я знаю синтаксис SCP для передачи файлов. Но дело здесь в том, что каждая команда, которую я сейчас здесь, будет запускать на сервере EC2. Например: String command = "ls -l"; Даст мне список домашних файлов в EC2.
Итак, как мне перенести видео, хранящееся на моем ноутбуке, в каталог home/ec2-user EC2?