package handleSsh; import com.jcraft.jsch.*; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; public class UploadFiles { // READ // files to upload should always be in "flowserver" directory !!! (it can be "something-flowserver" as well) // RENAME IT if it is not // Change BASIC_PATH to your needs!!! private static final String BASIC_PATH= "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/"; private static final String[] filesToUpload = { BASIC_PATH + "flow/cloudmqttconnect.js", // BASIC_PATH + "flow/cloudmqttconnect.js", BASIC_PATH + "flow/cmd_manager.js", // BASIC_PATH + "flow/code.js", // BASIC_PATH + "flow/comment.js", // BASIC_PATH + "flow/count.js", // BASIC_PATH + "flow/db_connector.js", BASIC_PATH + "flow/db_init.js", // BASIC_PATH + "flow/debug.js", // BASIC_PATH + "flow/designer.json", // BASIC_PATH + "flow/dido_controller.js", // BASIC_PATH + "flow/httprequest.js", // BASIC_PATH + "flow/httpresponse.js", // BASIC_PATH + "flow/httproute.js", // BASIC_PATH + "flow/infosender.js", // BASIC_PATH + "flow/modbus_reader.js", // BASIC_PATH + "flow/monitorconsumption.js", // BASIC_PATH + "flow/monitordisk.js", // BASIC_PATH + "flow/monitormemory.js", // BASIC_PATH + "flow/nodesdb_changecheck.js", // BASIC_PATH + "flow/show_dbdata.js", // BASIC_PATH + "flow/slack_filter.js", // BASIC_PATH + "flow/thermometer.js", // BASIC_PATH + "flow/trigger.js", // BASIC_PATH + "flow/virtualwirein.js", // BASIC_PATH + "flow/virtualwireout.js", // BASIC_PATH + "flow/wsmqttpublish.js", // // BASIC_PATH + "config", // BASIC_PATH + "addSwitch.py", // BASIC_PATH + "cloud_topic.py", // BASIC_PATH + "createNodeDbOriginal.js", // BASIC_PATH + "createNode.py", // // BASIC_PATH + "flow/helper/DataToTbHandler.js", // BASIC_PATH + "flow/helper/db_helper.js", // BASIC_PATH + "flow/helper/ErrorToServiceHandler.js", // BASIC_PATH + "flow/helper/logger.js", // BASIC_PATH + "flow/helper/md5.js", // BASIC_PATH + "flow/helper/notification_reporter.js", // BASIC_PATH + "flow/helper/register.js", // BASIC_PATH + "flow/helper/serialport_helper.js", // BASIC_PATH + "flow/helper/suncalc.js", BASIC_PATH + "flow/helper/utils.js", // // BASIC_PATH + "databases/notifications.table", // BASIC_PATH + "databases/total_energy.js", // BASIC_PATH + "databases/tbdata.nosql", // BASIC_PATH + "databases/modbus_config.js", // BASIC_PATH + "databases/accelerometer_db.js", }; private static String buildDestinationDirectory(String fileToUpload) { int index = fileToUpload.indexOf("flowserver/"); return fileToUpload.substring(index + 10); } private static ArrayList allServers; public static void main(String[] args) throws JSchException { allServers = new BuildServerArray().getAllServers(); for (Server server : allServers) { System.out.println("Connecting to server: " + server); copyFileToServer(server); } } private static void copyFileToServer(Server server) throws JSchException { JSch jsch = new JSch(); jsch.setKnownHosts("/home/rasta5man/.ssh/known_hosts"); jsch.addIdentity( "/home/rasta5man/.ssh/oms_key" ); Session session = null; ChannelSftp sftpChannel = null; try { session = jsch.getSession(server.getUsername(), server.getHost(), server.getPort()); session.setPassword(server.getPassword()); //session.setConfig("StrictHostKeyChecking", "no"); // Avoids checking for new host keys (not recommended for production) session.connect(); sftpChannel = (ChannelSftp) session.openChannel("sftp"); sftpChannel.connect(); for (String fileToUpload : filesToUpload) { System.out.println("Uploading " + fileToUpload + " to " + server); String directoryToUpload = ""; if(server.getUsername().equals("root")) // je to LM { directoryToUpload = "/root/flowserver" + buildDestinationDirectory(fileToUpload); } else { directoryToUpload = "/home/unipi/flowserver" + buildDestinationDirectory(fileToUpload); // directoryToUpload = "/etc" + buildDestinationDirectory(fileToUpload); // directoryToUpload = "/lib/systemd/system" + buildDestinationDirectory(fileToUpload); // System.out.println(directoryToUpload + fileToUpload); } sftpChannel.put(fileToUpload, directoryToUpload); } } catch (JSchException | SftpException e) { System.err.println("Error connecting to " + server.getUsername() + ": " + e.getMessage()); } finally { if (sftpChannel != null) { sftpChannel.disconnect(); } if (session != null) { session.disconnect(); } } } }