(1)Linux如何通过命令行进行远程调用?通过google和百度,终于让我找到一个简单的方法,其实一条语句就好:$ssh ip “command”或者是$ssh ip ‘ command‘例如: ssh 100.100.100.100 “mkdir -p /home/zhangliuhang/zz/zz/zz”(2)在远程调用中一个个人认为很重要的问题是环境变量怎么传过去?我们知道export的作用域是后面的shell子进程,当前shell进行export设置好环境变量后在次重启shell时,原先通过export设置的环境变量会被清除。除非将export语句写在特殊的文件中。例如 .bash_profile或者.bashrc文件中。 那么我们在启动远程进程时该如何将当前进程的env传过去给远程进程使用?我们可以这么做: $ssh 100.100.100.100 “export ZZZ=100;echo $ZZZ”但是当我们需要传递整个env时,并且要传递的env中存在诡异的环境变量名的时候,这种做法就行不通了。。。我们知道使用export时,环境变量名具有特殊要求,比如对于如下情况会报错$export java.tmp.dir=/home/zhangliuhang/tmp因为‘java.tmp.dir’是一个非法的变量名,也许你会问这个非法的变量名怎么可能出现在env中。。。恩。。。通过java或者c语言程序是可以的。比如:Java中: Map<String,String>env=new HashMap<String,String>(); env.put(“java.tmp.dir”,”/home/zhangliuhang/tmp”) ProcessBuilder builder=new ProcessBuilder(“bash”,”/home/zhangliuhang/program”); Builder.environment().putAll(env); Builder.start(); C语言中: #include “stdio.h” #include “stdlib.h” Int main (int argc,char* args[]) { setenv(“java.tmp.dir”,”/zhangliuhang/tmp”,1); system(args[1]); return 0; } 回到主题上,我们可以怎么做呢?我的具体做法是:在当前目录下写一个c语言的小程序setenv.cc,代码如下: 1 #include "stdio.h" 2 #include "stdlib.h" 3 #include "string.h" 4 5 int main(int argc,char* args[]) 6 { 7 FILE *fp; 8 char s[200]; 9 char envVariable[200]; 10 char envValue[200]; 11 int i,j,length; 12 13 if((fp=fopen(args[1],"r"))==NULL) 14 { 15 printf("file can"t open!
"); 16 return 0; 17 } 18 19 while (!feof(fp)) 20 { 21 fgets(s,200,fp); 22 23 //split the chars 24 length=strlen(s); 25 for(i=0;i<length;i++) 26 { 27 if(s[i]=="=") 28 { 29 envVariable[i]=" "; 30 break; 31 } 32 envVariable[i]=s[i]; 33 } 34 for (j=i+1;j<length;j++) 35 { 36 envValue[j-i-1]=s[j]; 37 } 38 envValue[j-i-1]=" "; 39 40 setenv(envVariable,envValue,1); 41 } 42 43 fclose(fp); 44 45 system(args[2]); 46 47 return 0; 48 } 编译成setenv可执行程序 同时写了一个脚本RemoteComputing.sh:ssh 100.100.100.100 “mkdir -p ”$TMPDIRenv>envcontentscp envcontent 100.100.100.100:$TMPDIR/scp ./setenv 100.100.100.100:$TMPDIR/bash -c “ssh 100.100.100.100 ‘$TMPDIR/setenv $TMPDIR/envcontent command’ ”ssh 100.100.100.100 “rm –rf $TMPDIR”那么只要调用RemoteComputing .sh这个脚本并且将脚本中command换成要执行的远程程序就好了~CentOS下NTP安装配置Ubuntu也能用谷歌音乐啦相关资讯 Linux Shell
- Linux基础知识:shell基础命令 (今 10:39)
- Linux系统监控shell脚本 (04月09日)
- Linux shell脚本编程 (03月01日)
| - Linux shell数组 (07月26日)
- Linux Shell实现批量关闭局域网中 (03月10日)
- Linux系统入门教程:如何知道当前 (11/27/2015 08:36:09)
|
本文评论 查看全部评论 (0)