本文整理汇总了Java中ch.ethz.ssh2.Session类的典型用法代码示例。如果您正苦于以下问题:Java Session类的具体用法?Java Session怎么用?Java Session使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
Session类属于ch.ethz.ssh2包,在下文中一共展示了Session类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: startTest
import ch.ethz.ssh2.Session; //导入依赖的package包/类
@Override
public void startTest(){
Session session=null;
try {
getConnection();
if(connection==null)
throw new IOException("Unable to connect the server!");
session = connection.openSession();
session.execCommand(shellofstartTest);
System.out.println("Here is some information about the remote host:");
InputStream stderr = new StreamGobbler(session.getStderr());
BufferedReader br = new BufferedReader(new InputStreamReader(stderr));
InputStream stdout = new StreamGobbler(session.getStdout());
BufferedReader stdbr = new BufferedReader(new InputStreamReader(stdout));
System.out.println("Test had been started successfully!");
} catch (IOException e) {
e.printStackTrace();
System.exit(-1);
}finally{
if(session != null)
session.close();
closeConnection();
}
}
示例2: exec
import ch.ethz.ssh2.Session; //导入依赖的package包/类
public String exec(String cmds) {
InputStream in = null;
String result = "";
try {
if (this.login()) {
Session session = conn.openSession();
session.execCommand(cmds);
in = session.getStdout();
result = this.processStdout(in, this.charset);
session.close();
conn.close();
}
} catch (IOException e1) {
e1.printStackTrace();
}
return result;
}
示例3: execCommand
import ch.ethz.ssh2.Session; //导入依赖的package包/类
/**
* Executes the command and returns the stdout/stderr as a combined string.
* <p/>
* Technically it returns the exitValue as well, but our ssh library (Ganymed) is unreliable here. I cannot figure
* out why sometimes session.getExitStatus has a good value and other times is null, even when the remote vms have
* the same configuration and are running the same command with presumably the same results.
*/
public ShellResult execCommand(SubstituterResult command)
{
SubstituterResult wrappedCommand = wrapSubstituterResultForStdout(command);
LOGGER.debug(context() + "Executing command '" + wrappedCommand.getExpurgated() + "'");
StopWatch stopWatch = new StopWatch();
Session session = null;
try
{
stopWatch.start();
session = connection.openSession();
session.execCommand(wrappedCommand.getSubstituted());
return makeResult(session);
}
catch (Throwable e)
{
// Technically the above should only throw IOException. However other exceptions are possible,
// such as NullPointerException, and it would be a shame to have captured no output in such an event.
logSessionResultNoThrow(wrappedCommand.getExpurgated(), session);
throw new RuntimeException(context() + "Error executing command '" + wrappedCommand.getExpurgated()
+ "', time elapsed: " + stopWatch, e);
}
finally
{
stopWatch.stop();
LOGGER.debug(context() + "Time elapsed: " + stopWatch);
if (session != null)
{
session.close();
}
}
}
示例4: makeResult
import ch.ethz.ssh2.Session; //导入依赖的package包/类
private ShellResult makeResult(Session session) throws IOException
{
String output = streamToString(session.getStdout());
Integer exitValue = session.getExitStatus();
int exitValueAsInt = exitValue == null ? Integer.MIN_VALUE : exitValue;
return new ShellResult(output, exitValueAsInt);
}
示例5: logSessionResultNoThrow
import ch.ethz.ssh2.Session; //导入依赖的package包/类
/**
* Desperate attempt to log something for diagnostics purposes, without allowing the session to throw during logging.
* The caller has already caught an exception, and it will be re-thrown as soon as this returns.
*/
private void logSessionResultNoThrow(String command, Session session)
{
try
{
LOGGER.error("Error in command: " + command);
LOGGER.error("Command output:\n" + streamToString(session.getStdout()));
LOGGER.error("Command exitValue: " + session.getExitStatus());
LOGGER.error("Command exitSignal: " + session.getExitSignal());
}
catch (Throwable e)
{
LOGGER.error("Unable to capture full results from ssh session :(", e);
}
}
示例6: close
import ch.ethz.ssh2.Session; //导入依赖的package包/类
private static void close(Session session) {
if (session != null) {
try {
session.close();
} catch (Exception e) {
logger.error(e.getMessage(), e);
}
}
}
示例7: executeCommand
import ch.ethz.ssh2.Session; //导入依赖的package包/类
/**
* 执行命令并返回结果,可以执行多次
* @param cmd
* @param lineProcessor 回调处理行
* @return 如果lineProcessor不为null,那么永远返回Result.true
*/
public Result executeCommand(String cmd, LineProcessor lineProcessor, int timoutMillis) {
Session session = null;
try {
session = conn.openSession();
return executeCommand(session, cmd, timoutMillis, lineProcessor);
} catch (Exception e) {
logger.error("execute ip:"+conn.getHostname()+" cmd:"+cmd, e);
return new Result(e);
} finally {
close(session);
}
}
示例8: exec
import ch.ethz.ssh2.Session; //导入依赖的package包/类
public void exec(String command)
throws IOException{
// Sending command to server
if (verboseMode == true){
consoleStream.println(
"Executing" +
" " +
"'" +
command +
"'" +
".");
}
Session session = connection.openSession();
session.execCommand(command);
// Copying server stdout on local stdout
InputStream remoteStdout =
new StreamGobbler(session.getStdout());
BufferedReader remoteStdoutReader =
new BufferedReader(new InputStreamReader(remoteStdout));
String line;
while ((line = remoteStdoutReader.readLine()) != null){
consoleStream.println(line);
}
// Close session
session.close();
}
示例9: exeRemoteConsole
import ch.ethz.ssh2.Session; //导入依赖的package包/类
public static List<String> exeRemoteConsole(String hostname, String username, String password, String cmd) {
List<String> result = new ArrayList<String>();
//指明连接主机的IP地址
Connection conn = new Connection(hostname);
Session ssh = null;
try {
//连接到主机
conn.connect();
//使用用户名和密码校验
boolean isconn = conn.authenticateWithPassword(username, password);
if (!isconn) {
logger.error("用户名称或者是密码不正确");
} else {
logger.info("已经连接OK");
ssh = conn.openSession();
//使用多个命令用分号隔开
// ssh.execCommand("pwd;cd /tmp;mkdir shb;ls;ps -ef|grep weblogic");
ssh.execCommand(cmd);
//只允许使用一行命令,即ssh对象只能使用一次execCommand这个方法,多次使用则会出现异常
// ssh.execCommand("mkdir hb");
//将屏幕上的文字全部打印出来
InputStream is = new StreamGobbler(ssh.getStdout());
BufferedReader brs = new BufferedReader(new InputStreamReader(is));
for (String line = brs.readLine(); line != null; line = brs.readLine()) {
result.add(line);
}
}
//连接的Session和Connection对象都需要关闭
if (ssh != null) {
ssh.close();
}
conn.close();
} catch (IOException e) {
logger.error("", e);
}
return result;
}
示例10: getSession
import ch.ethz.ssh2.Session; //导入依赖的package包/类
/**
* Creates a new "session" within the connection. Note, that each new call to the host requires a new session.
* @return new session object
* @throws IOException
*/
public Session getSession() throws IOException {
if(!isConnected()){
throw new IOException("Trying to get a session, when not connected!");
}
return conn.openSession();
}
示例11: put
import ch.ethz.ssh2.Session; //导入依赖的package包/类
/**
* Create a remote file and copy the contents of the passed byte array into it.
* The method use the specified mode when creating the file on the remote side.
*
* @param data the data to be copied into the remote file.
* @param remoteFileName The name of the file which will be created in the remote target directory.
* @param remoteTargetDirectory Remote target directory.
* @param mode a four digit string (e.g., 0644, see "man chmod", "man open")
* @throws IOException
*/
public void put(byte[] data, String remoteFileName, String remoteTargetDirectory, String mode) throws IOException {
Session sess = null;
if ((remoteFileName == null) || (remoteTargetDirectory == null) || (mode == null))
throw new IllegalArgumentException("Null argument.");
if (mode.length() != 4)
throw new IllegalArgumentException("Invalid mode.");
for (int i = 0; i < mode.length(); i++)
if (Character.isDigit(mode.charAt(i)) == false)
throw new IllegalArgumentException("Invalid mode.");
String cmd = "scp -t -d " + remoteTargetDirectory;
try {
sess = conn.openSession();
sess.execCommand(cmd);
sendBytes(sess, data, remoteFileName, mode);
sess.close();
} catch (IOException e) {
if (sess != null)
sess.close();
throw (IOException) new IOException("Error during SCP transfer.").initCause(e);
}
}
示例12: get
import ch.ethz.ssh2.Session; //导入依赖的package包/类
/**
* Download a set of files from the remote server to a local directory.
*
* @param remoteFiles Paths and names of the remote files.
* @param localTargetDirectory Local directory to put the downloaded files.
* @throws IOException
*/
public void get(String remoteFiles[], String localTargetDirectory) throws IOException {
Session sess = null;
if ((remoteFiles == null) || (localTargetDirectory == null))
throw new IllegalArgumentException("Null argument.");
if (remoteFiles.length == 0)
return;
// String cmd = "scp -f -r";
String cmd = "scp -f ";
for (int i = 0; i < remoteFiles.length; i++) {
if (remoteFiles[i] == null)
throw new IllegalArgumentException("Cannot accept null filename.");
cmd += (" " + remoteFiles[i]);
}
try {
sess = conn.openSession();
sess.execCommand(cmd);
receiveFiles(sess, remoteFiles, localTargetDirectory);
sess.close();
} catch (IOException e) {
if (sess != null)
sess.close();
throw (IOException) new IOException("Error during SCP transfer.").initCause(e);
}
}
示例13: exportDataBase
import ch.ethz.ssh2.Session; //导入依赖的package包/类
/**
* export database;
*/
public void exportDataBase() {
logger.info("start backup database");
String username = Config.getProperty("jdbc.username_dev");
String password = Config.getProperty("jdbc.password_dev");
String database = Config.getProperty("jdbc.database");
String host = Config.getProperty("jdbc.host_dev");
String os = System.getProperty("os.name");
String file_path = null;
// if (os.toLowerCase().startsWith("win")) { //根据系统类型
// file_path = System.getProperty("user.dir") + "\\sql\\";
// } else {
// file_path = System.getProperty("user.dir") + "/sql/";//保存的路径
// }
file_path = System.getProperty("myblog.path") + "sql";
String file_name = "/myblog" + DateTime.now().toString("yyyyMMddHHmmss") + ".sql";
String file = file_path + file_name;
logger.info("file_path and file_name: " + file);
//server
String s_host = Config.getProperty("server.host");
Integer s_port = Config.getIntProperty("server.port");
String s_username = Config.getProperty("server.username");
String s_password = Config.getProperty("server.password");
try {
StringBuffer sb = new StringBuffer();
sb.append("mysqldump -u " + username + " -p" + password + " -h " + host + " " +
database + " >" + file);
String sql = sb.toString();
logger.info(sql);
//connect to server
Connection connection = new Connection(s_host, s_port);
connection.connect();
boolean isAuth = connection.authenticateWithPassword(s_username, s_password);
if (!isAuth) {
logger.error("server login error");
}
Session session = connection.openSession();
session.execCommand(sql);
InputStream stdout = new StreamGobbler(session.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true) {
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
session.close();
connection.close();
stdout.close();
br.close();
logger.info("backup finish");
logger.info(sb.toString());
} catch (Exception e) {
logger.error("error", e);
}
}
示例14: doCommond
import ch.ethz.ssh2.Session; //导入依赖的package包/类
/**
* 远程执行命令
* @param ip
* @param user
* @param pwd
* @param cmd
* @return
*/
public static String doCommond(Connection conn,String cmd){
String result = "";
try {
if(conn==null){
System.out.println("请先链接服务器");
}else{
Session sess = conn.openSession();
sess.execCommand(cmd);
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader stdoutReader = new BufferedReader(new InputStreamReader(stdout));
while(true){
String line = stdoutReader.readLine();
if (line == null)
break;
result+=line+StaticKeys.SPLIT_BR;
}
//连接的Session和Connection对象都需要关闭
stdoutReader.close();
sess.close();
}
} catch (IOException e) {
System.out.println("执行linux命令错误:"+e.toString());
}
if(result.endsWith(StaticKeys.SPLIT_BR)){
result = result.substring(0, result.length()-StaticKeys.SPLIT_BR.length());
}
if(!StringUtils.isEmpty(result)){
if(cmd.contains("DEV")||cmd.contains("iostat")){
if(result.contains("</br></br>")){
result = result.substring(result.lastIndexOf("</br></br>")+10);
}
}
if(cmd.contains("mpstat")){
if(result.contains("</br></br>")){
result = result.substring(result.lastIndexOf("</br></br>")+10);
int s = result.indexOf("</br>")+5;
s = result.indexOf("</br>",s);
result = result.substring(0,s);
}
}
}
return result;
}
示例15: main
import ch.ethz.ssh2.Session; //导入依赖的package包/类
public static void main(String[] args)
{
String hostname = "127.0.0.1";
String username = "joe";
String password = "joespass";
try
{
/* Create a connection instance */
Connection conn = new Connection(hostname);
/* Now connect */
conn.connect();
/* Authenticate.
* If you get an IOException saying something like
* "Authentication method password not supported by the server at this stage."
* then please check the FAQ.
*/
boolean isAuthenticated = conn.authenticateWithPassword(username, password);
if (isAuthenticated == false)
throw new IOException("Authentication failed.");
/* Create a session */
Session sess = conn.openSession();
sess.execCommand("uname -a && date && uptime && who");
System.out.println("Here is some information about the remote host:");
/*
* This basic example does not handle stderr, which is sometimes dangerous
* (please read the FAQ).
*/
InputStream stdout = new StreamGobbler(sess.getStdout());
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));
while (true)
{
String line = br.readLine();
if (line == null)
break;
System.out.println(line);
}
/* Show exit status, if available (otherwise "null") */
System.out.println("ExitCode: " + sess.getExitStatus());
/* Close this session */
sess.close();
/* Close the connection */
conn.close();
}
catch (IOException e)
{
e.printStackTrace(System.err);
System.exit(2);
}
}