package handleSsh; import com.jcraft.jsch.*; import java.util.ArrayList; import java.util.HashMap; public class UploadFiles { // READ // files to upload should always be in "flowserver" directory !!! // RENAME IT if it is not private static final String[] filesToUpload = { // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/cloudmqttconnect.js", "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/cmd_manager.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/code.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/comment.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/count.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/db_connector.js", "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/db_init.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/debug.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/designer.json", "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/dido_controller.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/httprequest.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/httpresponse.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/httproute.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/infosender.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/modbus_reader.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/monitorconsumption.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/monitordisk.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/monitormemory.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/nodesdb_changecheck.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/show_dbdata.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/slack_filter.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/thermometer.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/trigger.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/virtualwirein.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/virtualwireout.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/wsmqttpublish.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/config", "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/addSwitch.py", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/cloud_topic.py", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/createNodeDbOriginal.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/createNode.py", //// // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/DataToTbHandler.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/db_helper.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/ErrorToServiceHandler.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/logger.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/md5.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/notification_reporter.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/register.js", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/serialport_helper.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/suncalc.js", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/flow/helper/utils.js", ////// // // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/databases/notifications.table", // "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/databases/tbdata.nosql", //// "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/databases/modbus_config.js", "/home/rasta5man/dev/oms/bitbucket-repositories/citysys-flowserver/databases/accelerometer_db.js", }; private static String buildDestinationDirectory(String fileToUpload) { int index = fileToUpload.indexOf("/bitbucket-repositories"); //int index = fileToUpload.indexOf("/flowserver"); //return fileToUpload.substring(index + 11); return fileToUpload.substring(index + 42); } 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(); } } } }