在Windows上远程执行Linux命令

公司的邮件服务器是Linux+AD的,因为所有用户都在AD里面,所以当建了一个用户以后还得SSH到Linux服务器上建个邮箱目录,非常麻烦。所以准备写一个程序一次性搞定。

主要的步骤是1. 增加用户到AD中同时更新用户的mail属于。2.根据建立的用户远程在Linux服务器上的邮件目录建立并设置目录权限。

如果你的是Linux+MySQL也是可以的。只是用你的WINDOWS客户端更新MYSQL数据库和在邮件服务器上建用户目录。

要求:

要实现在WINDOWS上远程执行Linux的命令需要使用SSH,但是因为我没有找到在windows上的纯ssh客户端程序,所以我安装了cygwin,并安装了ssh。利用SSH工具来远程执行命令,命令语法如下: ssh root@192.168.60.128 command

实现:

1.安装cygwin

下载:       选择右上角的 Install or update cygwin

2. 安装

标准的WINDOWS的安装模式,next->next 在下图中增加“中国的站点”速度会快很多

在Windows上远程执行Linux命令

在这里选择增加安装ssh,在查找那里输入ssh,注意最后一个openssh,点一下ship变成Install,我的因为安装这了所以自动变为Keep.OK,next直到完成。

在Windows上远程执行Linux命令

3、用你常用的编程软件【如果不想这么复杂完合可以使用脚本,更新也可以dsmod命令集完成AD的更新】

我这里使用C#,建一个工程界面如下:注意:Linux服务器IP地址,SSH的用户名、密码等因为是测试,所以我写入到程序里面去了,你完全可以增加TextBox用变量调用或使用xml做成配置文件,如果不怕安全问题你完全直接为Textbox的Text属性写为Defaut值。最好的办法休用ssh的证书自动登录。

在Windows上远程执行Linux命令

4、在Linux服务器的/root/下建立test.sh 脚本。注意:我这里调了一extman中的maildirmake.pl文件来建目录,如果你没有可以建每一个目录,目录的结构为:username/Maildir/下有三个文件子文件夹:cur new tmp三个。

#-------/root/test.sh

# Create by D.W.H 2010.8.10

#!/bin/sh

username=$1

tool=/var/www/extman/tools/maildirmake.pl

dataf=/mail/test.com

$tool $dataf/$username/Maildir

/bin/chown –R vuser.vgroup dataf/$username

#----END

5. 为c#程序中的Run事件增加代码

private void button1_Click(object sender, EventArgs e)

{

try

{

System.Diagnostics.Process.Start("H:\\cygwin\\cygwin.bat");

}

catch(Exception ex)

{

MessageBox.Show(ex.Message);

}

// maildirmake.pl /data/mail/test.com/username/Maildir

string sshcommand = "ssh root@192.168.60.128";

SendKeys.Send(sshcommand);

SendKeys.Send("{Enter}");

System.Threading.Thread.Sleep(100);

// sshpwd是ssh用户的密码根据你的密码自行更改

string sshpwd = "123456";

SendKeys.Send(sshpwd);

SendKeys.Send("{Enter}");

System.Threading.Thread.Sleep(100);

/*

*          //第一次使用ssh的时候会提示你回答answer

string answer = "yes";

SendKeys.Send(answer);

SendKeys.Send("{Enter}");

*/

string command=textBox1.Text +" " + textBox2.Text;

SendKeys.Send(command);

System.Threading.Thread.Sleep(100);

SendKeys.Send("{Enter}");

/*

string strexit = "exit";

SendKeys.Send(strexit);

SendKeys.Send("{Enter}");

*          System.Threading.Thread.Sleep(100);

SendKeys.Send(strexit);

SendKeys.Send("{Enter}");

*          //System.Threading.Thread.Sleep(100);

*/

}

6.测试:可以看到这里我只建了两个邮件目录.st和test两个用户。

在Windows上远程执行Linux命令

在Windows上远程执行Linux命令

在Windows上远程执行Linux命令

在Windows上远程执行Linux命令

结束:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wywxyp.html