Скопируйте видео с моей машины на сервер EC2, выполнив команду scp (JSCH)

Мне нужно передать видеофайл с моей локальной машины на облачный сервер 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?


person Community    schedule 26.03.2014    source источник


Ответы (1)


Ваша команда scp должна выполняться локально, а не в экземпляре EC2. Для этого не нужна библиотека JAOH. Подробнее см. в этом вопросе Как выполнять команды cmd через Java

Конечно, scp тоже должен быть локально доступен....

--Себ

person Sébastien Stormacq    schedule 26.03.2014
comment
Да, но мне нужно провести тест производительности EC2, поэтому я в конечном итоге запущу в него 1000 видео. Поэтому я пишу программу JAVA для этого. - person ; 27.03.2014
comment
Иногда простой сценарий оболочки намного проще разработать, чем приложение Java. Если вам нужно передать большое количество данных в AWS для обработки на экземпляре EC2, я бы посоветовал взглянуть на S3. Ваш локальный компьютер может загрузить данные в s3 (используя интерфейс командной строки или программу Java), а ваша программа EC2 загрузить из S3 перед обработкой файла. - person Sébastien Stormacq; 27.03.2014