ASP.NET 如何调用linux下的Shell脚本程序?

ASP.NET 如何调用linux下的Shell脚本程序?,第1张

ASPNET可以通过调用Process类来启动Shell脚本程序。具体步骤如下:1 引入命名空间SystemDiagnostics。2 创建ProcessStartInfo对象,设置它的FileName属性为Shell脚本的路径,设置Arguments属性为Shell脚本的参数。3 创建Process对象,设置它的StartInfo属性为上一步创建的ProcessStartInfo对象。4 调用Process对象的Start方法启动Shell脚本程序。示例代码:```using SystemDiagnostics;string scriptPath = \"/usr/local/bin/testsh\";string arguments = \"arg1 arg2 arg3\";ProcessStartInfo startInfo = new ProcessStartInfo{ FileName = \"/bin/bash\", Arguments = $\"-c \\\"{scriptPath} {arguments}\\\"\", RedirectStandardOutput = true};Process process = new Process{ StartInfo = startInfo};processStart();string output = processStandardOutputReadToEnd();processWaitForExit();```上面的代码启动了名为testsh的Shell脚本程序,它的完整路径为/usr/local/bin/testsh。脚本有三个参数:arg1、arg2和arg3。程序执行完毕后,可以通过processStandardOutput属性获得输出结果。注意在调用Start方法后必须等待程序运行完毕,才能读取输出结果。

用户要开通Linux系统服务器的时候,建议运行Xshell来远程连接服务器,如果连接不上,可以检查网络环境是否健康。
除此之外,也一定要填写正确的写Linux服务器登录信息,包括服务器用户名、密码等。如果是Linux服务器登录信息错误,可以在应用主机商客中心或者邮箱进行查看。与此同时,如果你没有安装SSH服务或者版本过低,那么也会出现连接不上的情况,这个时候你可以采用如下方式进行处理:
1、输入#ps -e | grep ssh ,如果出现“sshd”的字样,那么表示已经启动了,没有则说明没有成功。
2、安装SSH,并输入#sudo apt-get install openssh-server
3、启动#/etc/initd/ssh start
最后的最后,如果SSH端口号(22)已经呈现开放状态,IP也已经加入了白名单,但是就是连接不上,这个时候可以重新安装下MySQL,修改sshd的群组和root就行了。

expect -c "
set timeout 30;
spawn /usr/bin/ssh admin@$ServerB-IP
expect {
\"yes/no\" {send \"yes\r\"; exp_continue}
\"password\" {send \"xxx\r\";}
expect {
\"# \" {send \"tar zcvf ~/hellotargz hello\r\"}
\"$ \" {send \"tar zcvf ~/hellotargz hello\r\"}
}
interact"
这样试试

不一定
子网掩码是用来判断两个IP是否属于同一网段的,如果本身就属于同一网段,那么子网子网掩码不同也可以通信
例1
A:19216811 mask:2552552550
B:19216812 mask:25525500
这两个地址本身就在同一网段,因此子网掩码不同不产生影响。
如果两个IP不同网段,例2
A:10101010
B:80808080
这种情况下,即使掩码相同,也无法直接通信
想要具体判断的话,算出子网地址即可
IP与掩码分段对应,掩码是255,IP不变,掩码是0,IP为零
还是拿例1来说
对于机器A,两个IP算出来的网络号都是19216810,可以通信
对于机器B,两个IP算出来的网络号都是19216800,可以通信
双方都认为可以通信,自然也就可以通信
特殊情况:
例3:
A:19216811 mask:2552552550
B:19216801 mask:25525500
对于A,两个ip算出来的网络号分别是19216810,19216800,不能通信
对于B,两个IP算出来的网络号都是19216800 可以通信
因此A能收到B的消息,但是A想要发给B时,将会把数据发给路由器。
及特殊情况:
如果两台机器互相把对方设为默认网关,那么即使在例2的状态下,也可以通信。
注:以上都是指链路层连通的情况下,如果网线没插,肯定是不能通信的。


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

原文地址: http://outofmemory.cn/zz/13465212.html

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

发表评论

登录后才能评论

评论列表(0条)

保存