`
lihong11
  • 浏览: 455660 次
  • 性别: Icon_minigender_2
  • 来自: 湖南
社区版块
存档分类
最新评论

执行远程服务器上的shell脚本

阅读更多
package com.linkage.interfaces.webservice;
import java.io.IOException;
import java.io.InputStream;
import java.io.PrintStream;
import java.net.SocketException;
import java.util.ArrayList;
import java.util.List;

import org.apache.commons.net.telnet.TelnetClient;

import com.jcraft.jsch.JSchException;
import com.linkage.interfaces.webservice.factory.SSHProtocol;
/**
 * Telnet Util
 * @version 20140410 v.2
 */
public class TelnetSample implements Runnable{

 private InputStream in;
 private PrintStream out;
 private char prompt = '$';
 private String server;
 private String user;
 private String password;
 private String command;
 private String directory;
 private int port;
 
 /**
  * Overloaded constructor
  * @param server
  * @param user
  * @param password
  */
 public TelnetSample(String server, String user, String password,String directory,String command,Integer port){
  this.server = server;
  this.port = port;
  this.user = user;
  this.password = password;
  this.command = command;
  this.directory = directory;
 }
 /**
  * Enable thread
  */
 private String curLoginUser = null;
 /*account Attributes*/
 private List<String> iniGrp = new ArrayList<String>();
 private SSHProtocol sp;
 
 public void run() {
  login(server,user,password);
  execCommond(directory,command);
 }
 
 public void login(String server,String username,String password) {
   
  sp = new SSHProtocol(server,22);
  curLoginUser = username;
  try {
   sp.connect(username, password);
  } catch (Exception e) {
      e.printStackTrace();
  }
  
 }
 int status = -1;
 public boolean  execCommond(String directory,String command ){
  StringBuffer sb = new StringBuffer();
  String  cmd="chmod +x "+directory+"/"+command;
  try {
    status = sp.execCommand(cmd, sb);
    if(status==0){
     cmd="sh "+directory+"/"+command;
     status = sp.execCommand(cmd, sb);
     if(status!=0){
      return false;
     }
    }else{
     return false;
    }
  } catch (JSchException e) {
   e.printStackTrace();
  }finally{
   this.logout();
  }
  return true;
 }
 
 public void logout(){
  if(sp != null)
   sp.disconnect();
 }
 
 public boolean isLogin(){
  if(sp == null)
   return false;
  return sp.isConnected();
 } 
 
 
// /**
//  * test
//  * @param args
//  */
 public static void main(String[] args) {
  /*System.out.println(Thread.currentThread().getName() + " 线程运行开始!");
  TelnetSample tu1 = new TelnetSample("111.11.1.11", "aaaa",
    "11111","cd /s1/wxs/sale/businese/program",
    "./sale_bi.sh /ngbss1/wxwlbss/sale/stock_businese/program/upload/20100521024732.txt 8989 3");
  TelnetSample tu2 = new TelnetSample("10.100.10.100", "aaaa",
    "11111","cd /businese/program",
    "./sale_bi.sh /ngbss/sale/stock_businese/upload_stock/2010.txt 832 3");
  
  Thread thread1 = new Thread(tu1);
  thread1.start();
  Thread thread2 = new Thread(tu2);
  thread2.start();
  System.out.println(Thread.currentThread().getName() + " 线程运行结束!");*/
  
  TelnetSample tu3 = new TelnetSample("199.199.19.29", "root",
    "123456","/bss/web/domains/ww_domain",
    "ShellFtp2014.sh",22);
  Thread thread1 = new Thread(tu3);
  thread1.start();

 }

  
}

 SSHProtocol .java类

package com.linkage.maitain.factory;

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.PipedInputStream;
import java.io.PipedOutputStream;
import java.util.Iterator;
import java.util.StringTokenizer;
import java.util.Vector;

import org.apache.log4j.Logger;

import com.jcraft.jsch.Channel;
import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.JSchException;
import com.jcraft.jsch.Session;
import com.jcraft.jsch.UserInfo;

public class SSHProtocol {

    private static final Logger LOGGER = Logger.getLogger(SSHProtocol.class);
    
    public static final UserInfo defaultUserInfo = new UserInfo() {
        public String getPassphrase() {
            return null;
        }

        public String getPassword() {
            return null;
        }

        public boolean promptPassword(String arg0) {
            return false;
        }

        public boolean promptPassphrase(String arg0) {
            return false;
        }

        public boolean promptYesNo(String arg0) {
            return true;
        }

        public void showMessage(String arg0) {
        }
    };

    JSch jsch = null;
    String host;
    String user;
    int port = 22;
    String password;
	int timeout = 15 * 1000;
    public static final String RETR_STR = "\n";
    private Session session = null;

    public SSHProtocol(String host, int port, String user, String password) {
        jsch = new JSch();
        this.host = host;
        this.port = port;
        this.user = user;
        this.password = password;
    }

    public SSHProtocol(String host, String user, String password) {
        jsch = new JSch();
        this.host = host;
        this.user = user;
        this.password = password;
    }

    public SSHProtocol(String host, int port) {
        jsch = new JSch();
        this.host = host;
        this.port = port;
    }

    public void setLoginUser(String user, String password) {
        this.user = user;
        this.password = password;
    }


    public int execCommand(String command, StringBuffer sb)
            throws JSchException {
        Channel channel = null; // 
        String result = null;
        int i;
        int status = -1;

        if (command == null || !isConnected()) {
            return -1;
        }
        try {
            channel = session.openChannel("exec"); // 
            ((ChannelExec) channel).setCommand(command);
            channel.setInputStream(null);
            ((ChannelExec) channel).setErrStream(System.err, true); // 
            InputStream in = channel.getInputStream();
            channel.connect();

            byte[] tmp = new byte[2048];
            while (true) {
                while (in.available() > 0) {
                    i = in.read(tmp, 0, 1024);
                    if (i < 0) {
                        break;
                    }
                    result = new String(tmp, 0, i, "utf-8");
                    sb.append(result);
                }
                if (channel.isClosed()) {
                    status = channel.getExitStatus();
                    // System.out.println("exit-status: "+status);
                    break;
                }
                try {
                    Thread.sleep(200);
                } catch (Exception ee) {
                }
            }
            channel.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();
            throw e;
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return status;
    }


    public String execShell(String[] commands, String[] resps, boolean fetch)
            throws JSchException {
        Channel channel = null;
        StringBuffer result = new StringBuffer();
        String tmp;
        int i;
        boolean execOk = false;

        if (commands == null || resps == null) {
            throw new JSchException("Empty commands or responses to ssh.");
        } else if (commands.length != resps.length) {
            throw new JSchException(
                    "Commands and responses length not equal to command.");
        }
        if (!isConnected()) {
            throw new JSchException("has not connect to server");
        }

        try {
            channel = session.openChannel("shell");
            PipedInputStream pins = new PipedInputStream();
            PipedOutputStream pouts = new PipedOutputStream();
            ByteArrayOutputStream out = new ByteArrayOutputStream(2048);
            channel.setInputStream(pins);
            channel.setOutputStream(out);
            pouts.connect(pins);
            channel.connect();

            try {
                Thread.sleep(200);
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            for (i = 0; i < commands.length; i++) {
                if (!commands[i].endsWith(RETR_STR)) {
                    commands[i] += RETR_STR;
                }
                pouts.write(commands[i].getBytes());
                LOGGER.debug("--------------- commands: "+commands[i]);
                try {
                    Thread.sleep(2000);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                tmp = out.toString("utf-8");

                LOGGER.debug("--------------- resp: "+resps[i]);
                LOGGER.debug("--------------- return: "+tmp);
				
                execOk = isGetSuccessReturn(tmp, resps[i]);
                if (i == commands.length - 1 && fetch) {//
                    result.append(tmp);
                }
                if (execOk && i < commands.length - 1) {// 
                    out.reset();
                }
                if (!execOk) {
                    // one command timeout ,then ignore the others
                    throw new JSchException("command " + commands[i]
                            + " execute fails, other commands ignored.");
                }
            }
            channel.disconnect();
            return result.toString();
        } catch (JSchException e) {
            e.printStackTrace();
            throw e;
        } catch (Exception e) {
            e.printStackTrace();
            throw new JSchException(e.getMessage());
        }
    }


    public String execShell(String[] commands, String[] resps, boolean fetch,
            ShellChannelWrapper shellChannelWrapper) throws JSchException {
        StringBuffer result = new StringBuffer();
        boolean newShellChannel = null == shellChannelWrapper.getShellChannel();

        if (null == commands || null == resps) {
            throw new JSchException("Empty commands or responses to ssh.");
        } else if (commands.length != resps.length) {
            throw new JSchException(
                    "Commands and responses length not equal to command.");
        }
        if (!isConnected()) {
            throw new JSchException("has not connect to server");
        }

        try {
            if (newShellChannel) {
                shellChannelWrapper.createNewShellChannel(session);
            }

            try {
                Thread.sleep(200);
            } catch (Exception ex) {
                ex.printStackTrace();
            }

            shellChannelWrapper.getOut().reset();
            for (int i = 0; i < commands.length; i++) {
                if (!commands[i].endsWith(RETR_STR)) {
                    commands[i] += RETR_STR;
                }
                shellChannelWrapper.getPouts().write(commands[i].getBytes());
                try {
                    Thread.sleep(2000);
                } catch (Exception ex) {
                    ex.printStackTrace();
                }
                String tmp = shellChannelWrapper.getOut().toString("utf-8");
                boolean execOk = isGetSuccessReturn(tmp, resps[i]);
                if (i == commands.length - 1 && fetch) {//
                    result.append(tmp);
                }
                if (execOk && i < commands.length - 1) {//
                    shellChannelWrapper.getOut().reset();
                }
                if (!execOk) {
                    // one command timeout ,then ignore the others
                    throw new JSchException("command " + commands[i]
                            + " execute fails, other commands ignored.");
                }
            }
            return result.toString();
        } catch (JSchException e) {
            e.printStackTrace();
            throw e;
        } catch (Exception e) {
            e.printStackTrace();
            throw new JSchException(e.getMessage());
        }
    }
	

    public String execShellToPrompt(String command, String osprompt,
            ShellChannelWrapper shellChannelWrapper) throws JSchException {
        String[] commands = { command };
        String[] responses = { osprompt };
        String result = execShell(commands, responses, true,
                shellChannelWrapper);


        int pos1 = result.lastIndexOf(command);
        if (pos1 == -1) {
            pos1 = 0;
        } else {
            pos1 = pos1 + command.length();
        }

        result = getActualReqult(result, osprompt, pos1);
        return result;
    }
	

    public int execCommand(String host, int port, String user, String password,
            String command, StringBuffer sb) throws JSchException {
        JSch jsch = new JSch();
        String result = null;
        int i;
        int status = -1;

        if (command == null) {
            return -1;
        }
        try {
            Session session = jsch.getSession(user, host, port);
            session.setPassword(password);
            session.setUserInfo(defaultUserInfo);
            // session.setTimeout(timeout);
            session.connect();

            Channel channel = session.openChannel("exec");
            ((ChannelExec) channel).setCommand(command);
			
            LOGGER.debug("................"+command);
            channel.setInputStream(null);
            ((ChannelExec) channel).setErrStream(System.err, true);
            InputStream in = channel.getInputStream();
            channel.connect();

            byte[] tmp = new byte[2048];
            while (true) {
                while (in.available() > 0) {
                    i = in.read(tmp, 0, 1024);
                    if (i < 0) {
                        break;
                    }
                    result = new String(tmp, 0, i, "utf-8");
                    sb.append(result);
                }
                if (channel.isClosed()) {
                    status = channel.getExitStatus();
                    // System.out.println("exit-status: "+status);
                    break;
                }
                try {
                    Thread.sleep(200);
                } catch (Exception ee) {
                }
            }
            channel.disconnect();
            session.disconnect();
        } catch (JSchException e) {
            e.printStackTrace();
            throw e;
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        return status;
    }

   
    public String parseShellPrompt(String buffer) {
        String sp = "";
        int len = buffer.length();

        if (len < 1) {
            return "";
        }
        int pos_end = len - 1;
        int pos_begin = 0;

        char ch = buffer.charAt(pos_end);
        while (ch == '\r' || ch == '\n') {
            pos_end--;
            ch = buffer.charAt(pos_end);
        }
        pos_begin = pos_end;
        ch = buffer.charAt(pos_begin);
        while (ch != '\r' && ch != '\n') {
            pos_begin--;
            ch = buffer.charAt(pos_begin);
        }
        sp = buffer.substring(pos_begin + 1, pos_end);
        return sp;
    }


    public void connect(String user, String password) throws JSchException {
        try {
            session = jsch.getSession(user, host, port);
            session.setPassword(password);
            session.setUserInfo(defaultUserInfo);
            session.connect(timeout);

            try {
                Thread.sleep(200);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        } catch (JSchException e) {
            e.printStackTrace();
            throw e;
        }
    }


    public void connect() throws JSchException {
        try {
            session = jsch.getSession(user, host, port);
            session.setPassword(password);
            session.setUserInfo(defaultUserInfo);
			session.connect();

            try {
                Thread.sleep(200);
            } catch (Exception ex) {
                ex.printStackTrace();
            }
        } catch (JSchException e) {
            e.printStackTrace();
            throw e;
        }
    }

    public void disconnect() {
        if (session != null) {
            session.disconnect();
        }
    }


    public boolean isConnected() {
        if (session != null && session.isConnected()) {
            return true;
        } else {
            return false;
        }
    }

   
    private boolean isGetSuccessReturn(String actualReturn, String wantReturn)
            throws RuntimeException {
        Vector<String> wantsuccess = new Vector<String>();
        Vector<String> wantfailuer = new Vector<String>();
        int i = 0;
        String strtemp = "";
        int itemp = -1;

        parseWantReturn(wantReturn, wantsuccess, wantfailuer);
        Iterator<String> iter = wantfailuer.iterator();
        while (iter.hasNext()) {
            strtemp = (String) iter.next();
            itemp = actualReturn.indexOf(strtemp);
            if (-1 != itemp) {
                throw new RuntimeException(strtemp);
            }
        }

        iter = wantsuccess.iterator();
        while (iter.hasNext()) {
            strtemp = (String) iter.next();
            itemp = actualReturn.indexOf(strtemp);
            if (-1 != itemp) {
                return true;
            }
        }
        return false;
    }


    private void parseWantReturn(String wantReturn, Vector<String> wantSuccess,
            Vector<String> wantFailure) {
        String allsuccess = "";
        String allfailure = "";
        String[] strtemp;
        int i = 0;

        if (null == wantReturn) {
            return;
        }
        // parse by "^^"
        StringTokenizer st = null;

        /*st = new StringTokenizer(wantReturn, OSPromptType.ERRPROMPTTOKEN);
        int len = st.countTokens();
        if (len != 2) {
            allfailure = "";
            allsuccess = wantReturn;
        } else {
            allsuccess = st.nextToken();
            allfailure = st.nextToken();
        }
        // parse by ",,"
        if (allsuccess.length() > 0) {
            st = new StringTokenizer(allsuccess, OSPromptType.PROMPTTOKEN);
            while (st.hasMoreTokens()) {
                wantSuccess.add(st.nextToken());
            }
        }
        if (allfailure.length() > 0) {
            st = new StringTokenizer(allfailure, OSPromptType.PROMPTTOKEN);
            while (st.hasMoreTokens()) {
                wantFailure.add(st.nextToken());
            }
        }*/
    }


    public String getActualReqult(String message, String token, int posBegin) {
        String actualresult = "";
        int pos = 0;

        pos = message.indexOf(token, posBegin);
        if (pos == -1) {
            pos = message.length();
        }
        actualresult = message.substring(posBegin, pos);
        return actualresult;
    }
	  
    public static class ShellChannelWrapper {
        private Channel shellChannel;
        private PipedInputStream pins;
        private PipedOutputStream pouts;
        private ByteArrayOutputStream out;

        public void createNewShellChannel(Session jschSession) throws Exception {
            shellChannel = jschSession.openChannel("shell");
            pins = new PipedInputStream();
            pouts = new PipedOutputStream();
            out = new ByteArrayOutputStream(2048);
            shellChannel.setInputStream(pins);
            shellChannel.setOutputStream(out);
            pouts.connect(pins);
            shellChannel.connect();
        }

        public Channel getShellChannel() {
            return shellChannel;
        }

        public void setShellChannel(Channel shellChannel) {
            this.shellChannel = shellChannel;
        }

        public PipedInputStream getPins() {
            return pins;
        }

        public void setPins(PipedInputStream pins) {
            this.pins = pins;
        }

        public PipedOutputStream getPouts() {
            return pouts;
        }

        public void setPouts(PipedOutputStream pouts) {
            this.pouts = pouts;
        }

        public ByteArrayOutputStream getOut() {
            return out;
        }

        public void setOut(ByteArrayOutputStream out) {
            this.out = out;
        }
    }
	
    /*
     * public static void main(String[] args) throws Exception { SSHProtocol ssh =
     * new SSHProtocol("111.111.11.11",22); StringBuffer sb = new
     * StringBuffer(); int status = -1; String[] commands = {"passwd
     * test080514","test","test"}; String[] response = {"New password,,New UNIX
     * password^^Unknown user name", "Retype new password,,Retype new UNIX
     * password","#"}; String[] commands2 = {"pwd"}; String[] response2 = {"#"};
     * String tmp;
     * 
     * try { ssh.connect("root","123456"); } catch (Exception e) {}
     * 
     * /*status = ssh.execCommand("useradd test080514", sb);
     * System.out.println("useradd status = "+status+" result = "+sb);
     * sb.setLength(0); status = ssh.execCommand("useradd test080514", sb);
     * System.out.println("useradd(existent user) status = "+status+" result =
     * "+sb);
     * 
     * sb.setLength(0); status = ssh.execCommand("usermod -g root test080514",
     * sb); System.out.println("usermod status = "+status+" result = "+sb);
     * sb.setLength(0); status = ssh.execCommand("usermod -g root test0805140",
     * sb); System.out.println("usermod(noexistent user) status = "+status+"
     * result = "+sb); sb.setLength(0); status = ssh.execCommand("usermod -g
     * root0 test080514", sb); System.out.println("usermod(existent group)
     * status = "+status+" result = "+sb);
     */

    // System.out.println("passwd result = "+ssh.execShell(commands, response,
    // true));
    // commands[0] = "passwd test0805140";
    // System.out.println("passwd(noexistent user) result =
    // "+ssh.execShell(commands, response, true));
    /*
     * sb.setLength(0); status = ssh.execCommand("cut -d: -s -f1,2
     * /etc/shadow|grep -w test080514", sb); System.out.println("grep status =
     * "+status+" result = "+sb); sb.setLength(0); status = ssh.execCommand("cut
     * -d: -s -f1,2 /etc/shadow|grep -w test0805140", sb);
     * System.out.println("grep(noexistent user) status = "+status+" result =
     * "+sb);
     * 
     * 
     * sb.setLength(0); status = ssh.execCommand("userdel test080514", sb);
     * System.out.println("userdel status = "+status+" result = "+sb);
     * sb.setLength(0); status = ssh.execCommand("userdel test0805140", sb);
     * System.out.println("userdel(noexistent user) status = "+status+" result =
     * "+sb);
     * 
     * sb.setLength(0); status = ssh.execCommand("cat /etc/passwd", sb);
     * System.out.println("cat /etc/passwd status = "+status+" result = "+sb);
     * 
     * sb.setLength(0); status = ssh.execCommand("cat /etc/group", sb);
     * System.out.println("cat /etc/group status = "+status+" result = "+sb);
     */

    /*
     * tmp = ssh.execShell(commands2, response2, true);
     * System.out.println("fetch=true,
     * pwd=\n"+tmp+"\nshellprompt="+ssh.parseShellPrompt(tmp)); tmp =
     * ssh.execShell(commands2, response2, false);
     * System.out.println("fetch=false,
     * pwd=\n"+tmp+"\nshellprompt="+ssh.parseShellPrompt(tmp));
     * 
     * sb.setLength(0); status = ssh.execCommand("su - jiangh", sb);
     * System.out.println("su status = "+status+" result = "+sb);
     * sb.setLength(0); status = ssh.execCommand("su - jiangh0", sb);
     * System.out.println("su(noexistent user) status = "+status+" result =
     * "+sb);
     * 
     * sb.setLength(0); status =
     * ssh.execCommand("111.111.11.11",22,"root","123456","ls -l",sb);
     * System.out.println("ls status = "+status+" result = "+sb);
     * sb.setLength(0); status =
     * ssh.execCommand("111.111.11.11",22,"root","123456","ls0 -l",sb);
     * System.out.println("ls(error) status = "+status+" result = "+sb); }
     */

}

 

分享到:
评论

相关推荐

    shell脚本远程启动其他服务器的tomcat传输文件自动登录判断启动停止

    在这个场景中,shell脚本被用来组织和执行一系列步骤,包括登录远程服务器、传输文件、监控Tomcat服务的状态以及控制其启动和停止。 接下来是expect工具。Expect是一个用于自动化交互式进程的Tcl扩展,它可以模拟...

    shell脚本,通过snmp方式获取远程服务器的CPU内存和硬盘的使用率

    要编写一个能获取远程服务器CPU、内存和硬盘使用率的Shell脚本,你需要确保系统已经安装了SNMP工具以及`bc`命令。`bc`是一个交互式的或批处理的算术语言,用于进行浮点数计算,这对于处理可能包含小数的资源利用率...

    通过Shell脚本自动定时将Gitlab备份文件复制到远程服务器.doc

    本文将介绍如何使用Shell脚本将Gitlab备份文件自动定时复制到远程服务器上,并对远程服务器上的Gitlab备份文件进行定时清理。 知识点一:SSH密钥配对 在远程备份过程中,需要实现不需要密码的SSH登录,以便使用...

    java 远程调用Shell脚本客户端包

    3. **Shell脚本执行**:在SSH连接建立后,Java程序可以通过执行`exec`命令来运行远程服务器上的Shell脚本。脚本可以包含任意的Linux或Unix命令,甚至复杂的流程控制语句。 4. **输入/输出流处理**:为了获取Shell...

    shell脚本实现服务器进程监控的方法

    本文将深入探讨如何使用Shell脚本实现服务器进程监控,这不仅有助于及时发现异常情况,还能提高系统的可用性和稳定性。接下来,我们将根据提供的文件信息详细解释其原理、步骤以及实际应用。 #### 一、写作背景 在...

    shell脚本比较两台服务器目录及文件是否一致

    - `remote_dir`:远程服务器的目录路径。 - `local_md5_file`:存储本地文件MD5值的文件名。 - `remote_md5_file`:存储远程文件MD5值的文件名。 2. **获取MD5值**: - 使用`find`命令查找本地指定目录下的所有...

    远程批量修改linux服务器密码的脚本归类.pdf

    我们使用 SSH 来连接远程 Linux 服务器,并执行相关的命令。 3. Linux 服务器密码的修改:我们使用 Expect 脚本来修改 Linux 服务器的密码。该脚本可以自动地输入密码,并执行相关的命令。 4. 用户和组的管理:在 ...

    boyurl 远程执行shell脚本工具

    在IT行业中,有时我们需要远程管理服务器或执行一些系统级的任务,而Boyurl就是这样一个工具,它允许我们通过PHP来远程执行shell脚本,极大地提高了运维效率。这个小巧的工具包含两个主要文件,一个PHP文件(boyurl....

    Linux通过Shell脚本命令修改密码的两种方式

    1. ssh 远程到主机;...很多时候我们可能需要远程执行服务器上的脚本来修改账号密码,此时就没有办法进行交互了。 此时可以使用如下两种方式修改密码: 方式1: echo password | passwd testuser --stdin &gt; /dev

    shell脚本实现本地文件与服务器文件同步

    接下来,我们将进一步扩展功能,通过Shell脚本实现本地服务器上的文件备份至远程服务器的功能。 **步骤**: 1. **新建脚本文件**: - 创建一个新的脚本文件`backup.sh`。 - 写入以下脚本内容: ```bash #!/bin/...

    ssh远程执行命令方法和Shell脚本实例

    例如,如果要在远程服务器上执行需要交互式输入的命令`sudo apt-get update`,可以使用以下命令: ```bash ssh -t -p 22 root@192.168.1.100 'sudo apt-get update' ``` ### 二、Shell脚本实例 接下来,我们来看...

    (接上篇博客)Java SSH远程执行Shell脚本实现

    总结来说,这个Java程序利用JSch库实现了通过SSH协议在远程服务器上执行Shell脚本的功能,对于自动化运维、远程控制等场景具有重要的应用价值。理解并掌握这部分知识有助于提升Java开发者在系统集成和管理中的能力。

    Java实现远程执行SHELL

    上传文件到远程服务器,下载远程服务器资源。 ShellExecutor exe = new ShellExecutor("192.168.1.1", 22, "USERNAME", "PASSWORD"); if (exe.login()) { ResultEntity resultEntity = exe.execute("ls -ls");...

    远程执行命令脚本,可传密码

    linux下远程执行命令脚本,可传密码,提升权限

    通过PHP来远程执行shell脚本工具 整个程序只有两个文件,一个PHP文件,一个shell安装脚本,易于使用和安装

    一个通过PHP来远程执行shell脚本工具。整个程序只有两个文件,一个PHP文件,一个shell安装脚本,易于使用和安装。支持PHP5.2+以上的版本。提供的功能包括: 1:用户登录注销。 2:记录每次使用的IP,方便审计。 3...

    JAVA操作linux服务器,本文用于启动shell脚本并返回数据,简单易懂,可随时修改

    在IT行业中,Java语言因其跨平台的特性及丰富的库支持,常常被用来进行远程服务器管理。本主题聚焦于使用Java来操作Linux服务器,特别是通过执行shell脚本来获取服务器的反馈数据。以下将详细阐述这个过程涉及的技术...

    Shell脚本批量添加CSV数据到MySQL

    在Unix/Linux环境中,Shell脚本允许我们编写一系列命令来执行自动化任务。这个脚本的目的就是读取`prov.csv`中的数据,并将其插入到MySQL数据库中的相应表中。脚本可能包含如下步骤: 1. 使用`cat`或`head`命令查看...

    常用shell 脚本,dos攻击防范,

    常用shell脚本, Dos攻击防范(自动屏蔽攻击IP).sh 一键部署等等 Linux系统发送告警脚本.sh MySQL数据库备份单循环.sh MySQL数据库备份多循环.sh nginx 访问访问日志按天切割.sh nginx.conf nginx访问日志分析...

    linux自动备份文件 并上传到远程服务器 脚本实现

    本文将详细介绍如何利用Shell脚本在Linux系统上实现MySQL数据库的定时自动备份,并通过FTP协议上传至远程服务器。 #### 目标需求分析 目标是开发一个脚本,该脚本能定期执行MySQL数据库的备份,并将这些备份文件...

    shell实现批量在多台windows服务器上执行同一命令并获取返回结果

    标题中的“shell实现批量在多台windows服务器上执行同一命令并获取返回结果”是指通过Linux Shell脚本,利用网络协议(如SSH)实现对多台Windows服务器进行远程操作,执行相同的命令,并收集每台服务器的执行结果。...

Global site tag (gtag.js) - Google Analytics