linux远程执行shell


linux远程执行shell
 
第一种  www.2cto.com  
        java实现  易实现,易扩展(项目中使用)
http://www.ganymed.ethz.ch/ssh2/ 官网
 
Java代码  
Connection conn = new Connection(ip);  
boolean isAuthenticated = conn.authenticateWithPassword(username, password);  
Session sess = conn.openSession();  
sess.execCommand("ll");  
InputStream stdout = new StreamGobbler(sess.getStdout());  
BufferedReader br = new BufferedReader(new InputStreamReader(stdout));  
System.out.println(sess.getExitStatus());  
sess.close();  
conn.close();   
 
第二种  www.2cto.com  
        易实现,但是扩展比较麻烦.(平常的操作中,可以使用)
192.168.168.45 执行 192.168.168.13 上的shell命令
注意此过程不仅可以远程远程执行命令.任何远程操作都无需再输入密码.
原理是  ssh-keygen 和 ssh
  www.2cto.com  
1.生成45的密钥,在45上执行
Shell代码  
#ssh-keygen -t rsa  
会在用户的.ssh目录下(/root/.ssh)生成id_dsa.pub 授权加密文件
2.13授权,把在45上生成id_dsa.pub 复制到13  的/root/.ssh下执行
Shell代码  
#cat id_dsa.pub >> ~/.ssh/authorized_keys  
 
3.设置13上文件和目录的权限(保证.ssh和authorized_keys 的权限是600)
设置authorized_keys
Shell代码  
#chmod 600 authorized_keys  
设置.ssh目录
Shell代码  
#chmod 600 -R .ssh  
4. 执行远程命令
Shell代码  
ssh root@192.168.168.13 "sh /tmp/test.sh"  
 
第三种
        易实现不易扩展(而且,安全性需要自己维护)
在apache/hdocs下放php脚本.
在php脚本中执行shell命令.
 

相关内容

    暂无相关文章