import java.io.*
import java.net.*
import java.text.SimpleDateFormat
import java.util.Date
public class Server {
public static void main(String[] args) throws Exception{
ServerSocket ss = new ServerSocket(8080)
Socket socket = ss.accept()
BufferedReader in = //获取客户端发过来的消息
new BufferedReader(
new InputStreamReader(socket.getInputStream()))
PrintWriter out = //用于向客户端发送消息
new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()),true)
while(true){
String message = in.readLine()//读取消息
if("quit".equals(message))//退出命令
break
String s[] = message.split("\\s+")
if("dir".equals(s[0])){
File dir = new File(s[1])
File[] files = dir.listFiles()
//向客户端发送文件消息
for(File file:files){
Date date = new Date(file.lastModified())
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd")//日期格式化
FileInputStream is = new FileInputStream(file)
out.println(file.getName()+"\t"+df.format(date)+"\t"+((is.available()+1023)/1024)+"k")
}
out.println("ok")
}
}
socket.close()
in.close()
out.close()
ss.close()
}
}
-------------------------------------------------------------------------------------------------------------
import java.io.*
import java.net.*
public class Client {
public static void main(String[] args) throws Exception{
InetAddress add = InetAddress.getByName(null)
Socket socket = new Socket(add,8080)
BufferedReader in = //获取服务器端发过来的消息
new BufferedReader(
new InputStreamReader(socket.getInputStream()))
PrintWriter out = //用于向服务器端发送消息
new PrintWriter(
new OutputStreamWriter(
socket.getOutputStream()),true)
out.println("dir d:/test")
String mes
while(true){
mes = in.readLine()
if("ok".equals(mes))
break
System.out.println(mes)
}
out.println("quit")
socket.close()
in.close()
out.close()
}
}
希望能帮到你。。。仍有问题可以追问或者直接HI我。。。
需要密码1、使用java代码通过ssh登陆linux并执行命令,正常情况下sshd服务都会有,知道用户密码就可以使用这种方式了。2、要在远程linux服务器上执行命令,可以在linux服务器上启动一个服务做执行脚本的代理,不断接受来自你这个项目发来的脚本信息,然后执行,再把结果返回给你项目中去。第一种:以消息队列的方式发送这些脚本信息,linux代理不断接受,并返回结果。项目同时要不断接受结果。第二种:项目中产生的脚本,直接记录到数据库,linux上的代理访问这个数据库,获取脚本信息,并将执行结果写入数据库。项目中轮询执行结果。上面我说的消息队列可以采用activemq,或者rabbitmq这些。命令执行,java中直接Runtime.getRuntime().exec(command)就行了。
欢迎分享,转载请注明来源:夏雨云
评论列表(0条)