Я новичок в Java (я все еще участвую в процессе обучения), поэтому, пожалуйста, я очень благодарен, если ваш ответ содержит подробные шаги, которые я могу выполнить ,Отправка списка команд в список удаленного сервера через ssh с помощью Java с помощью JSch
Вот что я ищу 1) У меня есть список команд в txt-файле. 2) У меня есть список серверов в другом файле. 3) Я хочу, чтобы программа java запрашивала мой SSID userID/password, загружал командный файл и файл сервера. И выполните команды по рассматриваемым серверам. 4) Сохраните вывод в txt-файле на моем локальном компьютере, который я проанализирую позже.
Я смог получить следующую программу Java для входа в систему и запускать несколько замечаний. Но, как вы видите, UID/пароль и один сервер хранятся только в программе, и я только читаю System.out, не записывая вывод в файл.
Пожалуйста, помогите !!!
import java.io.ByteArrayInputStream;
import java.io.InputStream;
import com.jcraft.jsch.Channel;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
/** Demonstrates a connection to a remote host via SSH. **/
public class JSSH
{
private static final String user = "UID"; // TODO: Username of ssh account on remote machine
private static final String host = "localhost"; // TODO: Hostname of the remote machine (eg: inst.eecs.berkeley.edu)
private static final String password = "pass"; // TODO: Password associated with your ssh account
private static final String command = "ls -l\n cd Downloads \n ls -l\n"; // Remote command you want to invoke
public static void main(String args[]) throws JSchException, InterruptedException
{
JSch jsch = new JSch();
// TODO: You will probably want to use your client ssl certificate instead of a password
// jsch.addIdentity(new File(new File(new File(System.getProperty("user.home")), ".ssh"), "id_rsa").getAbsolutePath());
Session session = jsch.getSession(user, host, 22);
// TODO: You will probably want to use your client ssl certificate instead of a password
session.setPassword(password);
// Not recommended - skips host check
session.setConfig("StrictHostKeyChecking", "no");
// session.connect(); - ten second timeout
session.connect(10*1000);
Channel channel = session.openChannel("shell");
// TODO: You will probably want to use your own input stream, instead of just reading a static string.
InputStream is = new ByteArrayInputStream(command.getBytes());
channel.setInputStream(is);
// Set the destination for the data sent back (from the server)
// TODO: You will probably want to send the response somewhere other than System.out
channel.setOutputStream(System.out);
// channel.connect(); - fifteen second timeout
channel.connect(15 * 1000);
// Wait three seconds for this demo to complete (ie: output to be streamed to us).
Thread.sleep(3*1000);
// Disconnect (close connection, clean up system resources)
channel.disconnect();
session.disconnect();
}
}
Спасибо, я попробую, но как я могу получить приглашение для UserID/Password вместо того, чтобы оставить в скрипте? – Moe
Кто-нибудь может помочь? – Moe
Я запускал вышеуказанную программу, и она работала нормально. Я тестировал с помощью 'com.jcraft.jsch_0.1.31.jar' – TheCodingFrog