编写bat脚本实现以管理员执行服务器上的程序

编写bat脚本实现以管理员执行服务器上的程序,第1张

1、以管理员身份运行cmd;

2、输入命令reg add "HKEY_CLASSES_ROOT\batfile\shell\open" /v HasLUAShield /t REG_SZ;

3、执行后会在bat右键菜单上添加UAC小盾牌;

4、运行bat时会经过UAC提权就可以以管理员身份运行。

这个主要是要对socket的基本通讯流程比较熟悉,socket server端的流程是

建立socket

bind到特定的端口

listen指定连接数量

accept接受连接

建立连接后用read/write通讯

完成后用close清理资源

import socket 导入socket库

host='' 指明需要绑定的ip,为空应该是绑定本机所有Ip

port=51423 绑定的端口号

s=socketsocket(socketAF_INET,socketSOCK_STREAM) 创建socket

ssetsockopt(socketSOL_SOCKET,socketSO_REUSEADDR,1) 设置socket的属性

sbind((host,port)) 绑定端口

slisten(1) 设置只允许一个client连接

print ("Server is running on port %d;press Ctrl-C to terminate" % port) 打印信息,提示端口号

while 1: 死循环等待连接

clientsock,clientaddr=saccept() 等待直至有client连接,分别返回通讯用的socket和client的地址

clientfile=clientsockmakefile('rw',0) 创建用于通讯用的虚拟文件

clientfilewrite("Welcome,"+str(clientaddr)+"\n") 向client发送消息

clientfilewrite("please enter a string:") 向client发送消息

line=clientfilereadline()strip() 读取client消息

clientfilewrite("you entered %d characters\n" % len(line)) 向client发送消息

clientfileclose() 关闭虚拟文件

clientsockclose() 关闭通讯用socket,通讯结束

Socket TCP

反射API介绍

4Java Socket编程 TCP 协议编程

1) TCP工作模型: 先找

堂(主机/IP), 到食堂以后找窗口

(Socket/套接字 端口号), 服务员等待连接,客户向服务员发起连接

连接以后, 一个窗口可以为每个客户安排一个服务员(线程)提供服务,

每个服务过程可以双向交流通讯(流), 通讯完成后要关闭连接

5 TCP 服务端编程(食堂)(javaio,javanet,javalang)

1) 创建ServerSocket实例绑定一个服务端口(Socket/套接字 端口号)

2) 开始ServerSocket实例 的监听, 等待客户端的连接

3) 如果有客户连接进来, 就获得了客户的套接字(Socket)实例

客户的套接字(Socket)实例中包括与客户端建立的连接流

4) 为这个客户(Socket) 创建一个服务线程, 提供服务(run方法)

5) 继续等待下一个连接, 返回到2)

6) 服务线程 完成通讯服务过程

7) 端口号: 0~65535, 1K以下留给系统使用

6 TCP 客户端编程

1) 创建Socket 实例, 连接到服务器端, 成功创建s就表示连接到了

服务器

Socket s = new Socket("host", port)

2) 客户端 Socket 与服务器端 Socket 对应, 都包含输入, 输出流

客户端的sgetInputStream() 连接于服务器sgetOutputStream()

客户端的sgetOutputStream()连接于服务器sgetInputStream()

3) 使用线程处理 网络流

7 Java 反射

1) 反射是Java自我管理(类, 对象)的机制

2) 可以通过反射机制发现对象的类型 发现类型的方法/属性/构造器

3) Java 反射 可以创建对象 并 访问任意对象方法和属性等

4) Class 加载

类加载到内存: java 将磁盘类文件加载到内存中,为一个对象(实例)

这个对象是Class的实例, 也就是 这些对象都是Class实例

5)Class 实例代表Java中类型, 基本类型的类型: intclass, longclass

类类型 Class 实例获得如下:

Class cls = Stringclass;

Class cls = ClassforName("javalangString");

Class cls = "abc"getClass();

以上方法获得cls 是同一个对象, 就是String 类内存加载的结果

package javase2day06ftp;

import javaioBufferedOutputStream;

import javaioFile;

import javaioFileOutputStream;

import javaioIOException;

import javaioInputStream;

import javaioOutputStream;

import javanetSocket;

import javautilScanner;

/

ftp 客户端 可以使用命令 ls pwd get

/

public class FtpClient {

public static void main(String[] args)

throws IOException{

FtpClient client = new FtpClient();

clientopen();

}

public void open() throws IOException{

Socket s = new Socket("localhost", 9000);

InputStream in = sgetInputStream();

OutputStream out = sgetOutputStream();

//处理客户端对服务器的请求

new RequestProcess(out)start();

//处理服务器的反馈信息

new ResponseProcess(in)start();

}

//处理客户端对服务器的请求

class RequestProcess extends Thread{

OutputStream out;

public RequestProcess(OutputStream out) {

thisout = out;

}

public void run() {

try{

Scanner sc = new Scanner(Systemin);

while(true){

String s = scnextLine();

IOUtilsprintln(out, s);

if(sequals("bye")){

Systemexit(0);

}

}

}catch(IOException e){

eprintStackTrace();

}

}

}

class ResponseProcess extends Thread{

InputStream in;

public ResponseProcess(InputStream in) {

thisin = in;

}

public void run() {

try{

while(true){

String header = IOUtilsreadLine(in);

if(headerstartsWith("text,")){

show(header,in);

}else if(headerstartsWith("file,")){

save(header, in);

}

}

}catch(IOException e){

eprintStackTrace();

}

}

}

public void show(String header, InputStream in)

throws IOException {

int n = IntegerparseInt(headersplit(",")[1]);

for(int i=0; i<n; i++){

String s = IOUtilsreadLine(in);

Systemoutprintln(s);

}

}

public void save(String header, InputStream in)

throws IOException{

File dir = new File("ftp");

if(!direxists()){

dirmkdir();

}

//header: file,10,filename

String[] data = headersplit(",");

long length = LongparseLong(data[1]);

String filename = data[2];

File file = new File(dir, filename);

BufferedOutputStream out =

new BufferedOutputStream(

new FileOutputStream(file));

for(long i=0; i<length; i++){

int b = inread();

outwrite(b);

}

outclose();

}

}

package javase2day06ftp;

import javaioFile;

import javaioFileInputStream;

import javaioIOException;

import javaioInputStream;

import javaioOutputStream;

import javanetServerSocket;

import javanetSocket;

/

模拟FTP服务器, 支持命令pwd,ls,get file

协议: type,length,value TLV格式

文本: text,5\nline1\nline2\nline3\nline4\nline5\n

文件: file,4,filename\n 41 42 43 44

text,5\nline1\nline2\nline3\nline4\nline5\nfile,4,filename\n 41 42 43 44

/

public class FtpServer {

public static void main(String[] args)

throws IOException{

FtpServer server = new FtpServer();

serverstart();

}

public void start() throws IOException{

ServerSocket ss = new ServerSocket(9000);

while(true){

Socket s = ssaccept();

new Agent(s)start();

}

}

class Agent extends Thread{

Socket s;

public Agent(Socket s) {

thiss = s;

}

public void run() {

try{

InputStream in = sgetInputStream();

OutputStream out = sgetOutputStream();

//向客户端发送, 先发协议头,再发送文本行

outwrite("text,1\n"getBytes());//协议头

//发送消息内容, 一行文本消息

outwrite("欢迎使用FTP演示服务器!\n"getBytes());

outflush();

while(true){

//读取客户端发送到命令

String cmd = IOUtilsreadLine(in)trim();

if("pwd"equals(cmd)){//显示当前目录

pwd(out);

}else if("ls"equals(cmd)){

ls(out);

}else if(cmdstartsWith("get ")){

get(cmd, out);

}else if("bye"equalsIgnoreCase(cmd)){

IOUtilsprintln(out, "text,1");

IOUtilsprintln(out, "Bye, Bye!");

sclose();

}else{

outwrite("text,1\n"getBytes());//协议头

outwrite("只支持pwd,ls,get,bye!\n"getBytes());

outflush();

}

}

}catch(IOException e){

eprintStackTrace();

}

}

}

public void pwd(OutputStream out)

throws IOException{

File dir = new File("");

IOUtilsprintln(out, "text,1");

IOUtilsprintln(out, dirgetCanonicalPath());

}

public void ls(OutputStream out)

throws IOException{

File dir = new File("");

File[] files = dirlistFiles();

IOUtilsprintln(out, "text,"+fileslength);

for (File f : files) {

if(fisDirectory()){

IOUtilsprintln(out, "["+fgetName()+"]");

}else{

IOUtilsprintln(out, fgetName());

}

}

}

public void get(String cmd, OutputStream out)

throws IOException{

//cmd="get filename"

String name = cmdsplit("\\s+")[1];

File file = new File(name);

if(! fileexists()){

IOUtilsprintln(out, "text,1");

IOUtilsprintln(out, "没有文件呀!"+name);

return;

}

//文件协议头:

IOUtilsprintln(out,

"file,"+filelength()+","+name);

FileInputStream in =

new FileInputStream(file);

IOUtilscp(in, out);

outflush();

inclose();

IOUtilsprintln(out, "text,1");

IOUtilsprintln(out, "发送成功:"+name);

}

}

实现的方法和详细的 *** 作步骤如下:

1、第一步,打开计算机上的eclipse软件,然后依次单击左上角的“File”-->“New”-->“Project”选项,见下图,转到下面的步骤。

2、第二步,完成上述步骤后,通过搜索找到Web项目,输入关键字web,可以快速查询该Web项目,见下图,转到下面的步骤。

3、第三步,完成上述步骤后,创建Web项目时,输入项目名称,然后完成构建,继续 *** 作,见下图,转到下面的步骤。

4、第四步,完成上述步骤后,可以在Web项目中创建一个jsp文件,然后在“New”选项下选择“Other”选项来创建jsp文件,见下图,转到下面的步骤。

5、第五步,完成上述步骤后,在文档的新界面中,选择“jsp File”选项,输入jsp文件的名称,然后将创建一个空的jsp文件模板,见下图,转到下面的步骤。

6、第六步,完成上述步骤后,如果indexjsp是Web项目中的主页,则默认情况下,系统将在访问期间搜索indexjsp文件,见下图,转到下面的步骤。

7、第七步,完成上述步骤后,就获得了想要的结果了,见下图。这样,就解决了这个问题了。

首先利用

osremove() will remove a file

osrmdir() will remove an empty directory

shutilrmtree() will delete a directory and all its contents

写你的模块

利用Linux crontab定时任务运行这个模块。

还可以以守护进程的方式运行你的脚本。nohup <程序名> &

以上就是关于编写bat脚本实现以管理员执行服务器上的程序全部的内容,包括:编写bat脚本实现以管理员执行服务器上的程序、编写一个简单的python服务器程序,求下面代码的逐行注释!!、给出一个C++或Java编写的ftp服务器程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9362053.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-27
下一篇2023-04-27

发表评论

登录后才能评论

评论列表(0条)

    保存