脚本里intmain
⑴ 在C++里执行VBS 如何执行VBS命令啊 比如Wscript.Sleep 5000 '
先写好一个VBS脚本放在相对于主程序(要调用VBS的程序)的某个目录下,比如主程序叫“main.exe”位置是“D: est”,VBS脚本(叫“test.vbs”)放在“D: estABC”,那么调用的命令(C/C++)是:
system("cd/dD:\test");
system(""A\B\C\test.vbs"");
原理是:CMD脚本可以直接调用VBS脚本,上面的system是用来调用CMD命令的,而CMD命令中可以调用另外的脚本(CMD脚本或VBS或程序等)。所以这样写是间接调用VBS脚本,借助CMD调用了VBS
注意:第一句执行的CMD命令是把CMD的当前目录切换到正确的位置,程序调用CMD命令时CMD的当前目录不程序当前目录,而是CMD的默认路径;system函数的头文件是stdlib.h。
完整示例代码:
#include<windows.h>
#include<string>
usingnamespacestd;
intmain(){
//VBS调用命令文本(使用相对路径的写法,注意首尾要加双引号)
charvbs[]=""..\test.vbs"";
//获取当前目录字符串的长度
intbufLen=GetCurrentDirectory(0,NULL);
//分配字符串空间
char*pwd=newchar[bufLen];
//正式获取当前目录字符串
GetCurrentDirectory(bufLen,pwd);
//组装cd命令
stringcmd(pwd);
cmd.insert(0,"cd/d");
//调用CMD命令,转移到程序运行目录
system(cmd.data());
//调用CMD命令,间接调用指定的VBS脚本
system(vbs);
delete[]pwd;
return0;
}
注意:如果使用开发环境调试的话可能会出现命令执行错误的现象,原因是开发环境调试时的当前目录不是exe文件所在目录,在实际直接执行程序时的当前目录就是exe文件所在目录。
示例VBS脚本(test.vbs):
MsgBox("testVBS")
测试结果:
我用VC6写的C++,VBS脚本test.vbs在图中“try10”目录下,执行的程序“try10.exe”在“Debug”目录下。
P.S. 只要这个语言能调用CMD命令,CMD能调用的这个语言就都能调用,并不存在不界线,借助CMD就能打破界线。
⑵ 在c\c++程序里怎么执行shell脚本命令
在C/C++源码中执行shell命令,最基本的就是system()C库函数,其次可以使用系统提供的api函数,比如windows上的createprocess shellexecuteex等函数,在linux上可以使用exec()等等.
下面是我在windows上的弄的一个测试版本,使用了线程,我感觉用nc来测试,不如直接netstat -an | findstr /I "udp" | findstr "22" ,因为22端口太其特了,很容易抓出来.另外nc判断端口常规的作法就是nc -vv ip port 看提示信息就好了.
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>
#include <windows.h>
#include <process.h>
UINT __stdcall ThreadFunc(LPVOID lpParam) {
//将hacker字符串做为nc提交的数据
int ret = system("echo hacker | nc.exe -u 127.1 22");
//ret==0说明没有开启22端口
if (ret == 0 ) printf("nc: Write error: Connection refused.\n");
return 0;
}
int main()
{
HANDLE hThread = (HANDLE)_beginthreadex(0, 0, ThreadFunc, 0, 0, 0);
//等待3秒钟,说明22端口可用
WaitForSingleObject(hThread, 3000);
//结束测试线程
TerminateThread(hThread, 0);
//重新开启NC连接22端口
system("nc.exe -vv -u 127.1 22");
return 0;
}
欢迎光临0x30贴吧,一个高质量的计算机技术交流平台.
⑶ Windows的脚本,有暂停指定时间的命令吗比如Linux下有sleep命令,可以让脚本停止几秒后继续执行。
VBS脚本中可以这样:
WScript.Sleep 3000
时间单位为毫秒(milliseconds),因此,上面这句就是暂停3秒。
DOS批处理脚本中只能用ping命令来延时(这个时间是很不精确的)。例如:
@ping 127.0.0.1 -n 2 -w 1000 > nul
另外,Windows 2003 Resource Kit 提供了sleep的功能,你可以去微软网站下载安装。参见下面的链接吧。
⑷ daemonlinux
linuxfunction鍑芥暟daemon镄勪綔鐢锛
linux鎻愪緵浜哾aemon鍑芥暟鐢ㄤ簬鍒涘缓瀹堟姢杩涚▼锛屽疄鐜板师鐞嗕笌涓婃枃涓浠嬬粛镄勬槸涓镙风殑銆
#include
intdaemon(intnochdir,intnoclose);
1锛巇aemon()鍑芥暟涓昏佺敤浜庡笇链涜㔉绂绘带鍒跺彴锛屼互瀹堟姢杩涚▼褰㈠纺鍦ㄥ悗鍙拌繍琛岀殑绋嫔簭銆
2锛庡綋nochdir涓0镞讹纴daemon灏嗘洿鏀硅繘锘庣殑镙圭洰褰曚负root(钬/钬)銆
3锛庡綋noclose涓0鏄锛宒aemon灏呜繘锘庣殑STDIN,STDOUT,STDERR閮介吨瀹氩悜鍒/dev/null銆
daemon镄勫疄鐜板ぇ镊村备笅锛
intdaemon(intnochdir,intnoclose)
{
pid_tpid;
if(!nochdirchdir("/")!=0)//濡傛灉nochdir=0,闾d箞鏀瑰彉鍒"/"镙圭洰褰
return-1;
if(!noclose)//濡傛灉娌℃湁noclose镙囧织
{
intfd=open("/dev/null",O_RDWR);
if(fd0)
return-1;
/*閲嶅畾钖戞爣鍑呜緭鍏ャ佽緭鍑恒侀敊璇鍒/dev/null锛
阌鐩樼殑杈揿叆灏嗗硅繘绋嬫棤浠讳綍褰卞搷锛岃繘绋嬬殑杈揿嚭涔熶笉浼氲緭鍑哄埌缁堢
*/
p(fd,0);
p(fd,1);
p(fd,2);
close(fd);
}
pid=fork();//鍒涘缓瀛愯繘绋.
if(pid0)//澶辫触
return-1;
if(pid>0)
_exit(0);//杩斿洖镓ц岀殑鏄鐖惰繘绋,闾d箞鐖惰繘绋嬮鍑,璁╁瓙杩涚▼鍙樻垚鐪熸g殑瀛ゅ効杩涚▼.
//鍒涘缓镄刣aemon瀛愯繘绋嬫墽琛屽埌杩欓噷浜
if(setsid()0)//鍒涘缓鏂扮殑浼氲瘽锛屽苟浣垮缑瀛愯繘绋嬫垚涓烘柊浼氲瘽镄勯嗗ご杩涚▼
return-1;
return0;//鎴愬姛鍒涘缓daemon瀛愯繘绋
}
浣跨敤瀹炰緥锛
intmain()
{
daemon(1,1)锛//鍙傛暟镙规嵁闇姹傜‘瀹
/*鍦ㄨ繖閲屾坊锷犱綘闇瑕佸湪钖庡彴锅氱殑宸ヤ綔浠g爜*/
}
濡备綍𨱒姝昏繖镙风殑杩涚▼锛
阃氲繃ps+grep镓惧埌瀵瑰簲镄勫悗鍙拌繘绋嬶纴浣跨敤kill锻戒护灏呜繘绋嬫潃姝伙绂涔熷彲鍒涘缓shell鑴氭湰瀵硅繘绋嬬殑钖锷ㄣ佸叧闂銆侀吨钖杩涜岃嚜锷ㄧ$悊
docker鏁欑▼锛
docker鏄涓涓寮婧愮殑搴旂敤瀹瑰櫒寮曟搸锛岃╁紑鍙戣呭彲浠ユ墦鍖呬粬浠镄勫簲鐢ㄤ互鍙娄緷璧栧寘鍒颁竴涓鍙绉绘岖殑闀滃儚涓锛岀劧钖庡彂甯冨埌浠讳綍娴佽岀殑Linux鎴朩indows链哄櫒涓婏纴涔熷彲浠ュ疄鐜拌櫄𨰾熷寲銆
瀹瑰櫒鏄瀹屽叏浣跨敤娌欑辨満鍒讹纴鐩镐簰涔嬮棿涓崭细链変换浣曟帴鍙c
涓涓瀹屾暣镄刣ocker链変互涓嫔嚑涓閮ㄥ垎缁勬垚锛
1.DockerClient瀹㈡埛绔
2.DockerDaemon瀹堟姢杩涚▼
3.DockerImage闀滃儚
4.DockerContainer瀹瑰櫒
docker鏄疨aaS鎻愪緵鍟哾otCloud寮婧愮殑涓涓锘轰簬LXC镄勯珮绾у瑰櫒寮曟搸锛屾簮浠g爜镓樼″湪Github涓,锘轰簬go璇瑷骞堕伒浠峣pache2.0鍗忚寮婧愩
docker镊2013骞翠互𨱒ラ潪甯哥伀鐑锛屾棤璁烘槸浠巊ithub涓婄殑浠g爜娲昏穬搴︼纴杩樻槸Redhat鍦≧HEL6.5涓闆嗘垚瀵筪ocker镄勬敮鎸,灏辫繛Google镄凛omputeEngine涔熸敮鎸乨ocker鍦ㄥ叾涔嬩笂杩愯屻
鍦↙inux鐜澧冧笅濡备綍瀹夎呭拰浣跨敤Docker锛
Docker浠1.13鐗堟湰涔嫔悗閲囩敤镞堕棿绾跨殑鏂瑰纺浣滀负鐗堟湰鍙凤纴鍒嗕负绀惧尯鐗圕E鍜屼紒涓氱増EE
浠Centos镎崭綔绯荤粺瀹夎匔E鐗堜负渚嬶细
涓.鍗歌浇
1锛夋煡鐪嬬郴缁熶腑docker-ce瀹夎呭寘
2锛夊嵏杞绦ocker-ce瀹夎呭寘
3锛夊垹闄docker镄勯暅镀忕洰褰曟枃浠
rm-rf/var/lib/docker/
4锛夊垹闄docker镄勯暅镀忕洰褰曟枃浠
rm-rf/var/run/docker/
浜.瀹夎
1锛夐厤缃畒um浠揿簱docker-ce闀滃儚婧
yum-config-manager--add-repohttps://download.docker.com/linux/centos/docker-ce.repo
2锛夊畨瑁卍ocker-ce
yuminstalldocker-ce
3锛夊惎锷ㄥ苟锷犲叆寮链哄惎锷
systemctlstartdocker.servicesystemctlenabledocker.service
linuxsupervisor浣灭敤锛
Supervisor鏄鐢≒ython寮鍙戠殑涓濂楅氱敤镄勮繘绋嬬$悊绋嫔簭锛岃兘灏嗕竴涓鏅阃氱殑锻戒护琛岃繘绋嫔彉涓哄悗鍙癫aemon锛屽苟鐩戞带杩涚▼鐘舵侊纴寮傚父阃鍑烘椂鑳借嚜锷ㄩ吨钖銆
瀹冩槸阃氲繃fork/exec镄勬柟寮忔妸杩欎簺琚绠$悊镄勮繘绋嫔綋浣渟upervisor镄勫瓙杩涚▼𨱒ュ惎锷锛岃繖镙峰彧瑕佸湪supervisor镄勯厤缃鏂囦欢涓锛屾妸瑕佺$悊镄勮繘绋嬬殑鍙镓ц屾枃浠剁殑璺寰勫啓杩涘幓鍗冲彲銆备篃瀹炵幇褰揿瓙杩涚▼鎸傛帀镄勬椂鍊欙纴鐖惰繘绋嫔彲浠ュ嗳纭銮峰彇瀛愯繘绋嬫寕鎺夌殑淇℃伅镄勶纴鍙浠ラ夋嫨鏄钖﹁嚜宸卞惎锷ㄥ拰鎶ヨ︺
supervisor杩樻彁渚涗简涓涓锷熻兘锛屽彲浠ヤ负supervisord鎴栬呮疮涓瀛愯繘绋嬶纴璁剧疆涓涓闱沥oot镄剈ser锛岃繖涓猽ser灏卞彲浠ョ$悊瀹冨瑰簲镄勮繘绋嬨
瀹堟姢绾跨▼镄勪綔鐢锛
瀹堟姢绾跨▼浠ュ强鍏朵綔鐢
阃氩父𨱒ヨ达纴瀹堟姢绾跨▼缁忓父琚鐢ㄦ潵镓ц屼竴浜涘悗鍙颁换锷★纴浣嗘槸锻锛屼綘鍙埚笇链涘湪绋嫔簭阃鍑烘椂锛屾垨钥呰碕VM阃鍑烘椂锛岀嚎绋嬭兘澶熻嚜锷ㄥ叧闂锛屾ゆ椂锛屽畧鎶ょ嚎绋嬫槸浣犵殑棣栭夈
钬滃彧瑕佸綋鍓岼VM瀹炰緥涓灏氩瓨浠讳綍涓涓闱炲畧鎶ょ嚎绋嬫病链夌粨𨱒燂纴瀹堟姢绾跨▼灏卞叏閮ㄥ伐浣滐绂鍙链夊綋链钖庝竴涓闱炲畧鎶ょ嚎绋嬬粨𨱒熸槸锛屽畧鎶ょ嚎绋嬮殢镌JVM涓钖岀粨𨱒熷伐浣滐纴Daemon浣灭敤鏄涓哄叾浠栫嚎绋嬫彁渚涗究鍒╂湇锷★纴瀹堟姢绾跨▼链鍏稿瀷镄勫簲鐢ㄥ氨鏄疓C(鍨冨溇锲炴敹鍣)锛屼粬灏辨槸涓涓寰堢О镵岀殑瀹堟姢钥呫傗
⑸ linux判断目录是否存在命令linux判断目录
linux如何查看新建用户的主目录是什么?
可以通过查看系统文件/etc/passwd来查看新建用户的主目录。
linux判断文件是否存在?
两个方式:find命令或者shell脚本。
1、find命令(1)find是linux下用于查找文件的通用方法。(2)find语法:find(3)例如:find/tmp-namewa*-typel,是在/tmp下查找名为wa开头且类型为符号链接的文件。找到就表示存在。
2、shell脚本(1)在进行文件的自动处理中常常需要自动判别,下面的脚本判断test.log是否存在,存在则显示文件存在,否则显示文件不存在。(2)例子:编辑一个脚本判断文件是否存在。vit.sh#!/bin/bashif;then//这里是判断语句,-e表示进行比较结果为真则存在echo"文件存在"elseecho"文件不存在"fi保存退出执行:sht.sh
Linux下简单的判断目录中是否有新文件的Shell?
因shell还不是很熟练,所以做此笔记,方便查看。
#!/bin/sh
myPath="/var/log/httpd/"
myFile="/var/log/httpd/access.log"
#这里的-x参数判断$myPath是否存在并且是否具有可执行权限
if;then
mkdir"$myPath"
fi
#这里的-d参数判断$myPath是否存在
if;then
mkdir"$myPath"
fi
#这里的-f参数判断$myFile是否存在
if;then
touch"$myFile"
fi
#其他参数还有-n,-n是判断一个变量是否是否有值
if;then
echo"$myVarisempty"
exit0
fi
#两个变量判断是否相等
if;then
echo'$var1eq$var2'
else
echo'$var1noteq$var2'
fi
========================================
shell判断语句
流程控制"if"表达式如果条件为真则执行then后面的部分:if....;then
....
elif....;then
....
else
....
fi
大多数情况下,可以使用测试命令来对条件进行测试。比如可以比较字符串、判断文件是否存在及是否可读等等?通常用""来表示条件测试。注意这里的空格很重要。要确保方括号的空格。
:判断是否是一个文件
:判断/bin/ls是否存在并有可执行权限
:判断$var变量是否有值
:判断$a和$b是否相等-rfile用户可读为真
-wfile用户可写为真
-xfile用户可执行为真
-ffile文件为正规文件为真
-dfile文件为目录为真
-cfile文件为字符特殊文件为真
-bfile文件为块特殊文件为真
-sfile文件大小非0时为真
-tfile当文件描述符(默认为1)指定的设备为终端时为真
#########################################################
含条件选择的shell脚本
对于不含变量的任务简单shell脚本一般能胜任。但在执行一些决策任务时,就需要包含if/then的条件判断了。shell脚本编程支持此类运算,
包括比较运算、判断文件是否存在等。基本的if条件命令选项有:-eq—比较两个参数是否相等(例如,if)
-ne—比较两个参数是否不相等
-lt—参数1是否小于参数2
-le—参数1是否小于等于参数2
-gt—参数1是否大于参数2
-ge—参数1是否大于等于参数2
-f—检查某文件是否存在(例如,if)
-d—检查目录是否存在
几乎所有的判断都可以用这些比较运算符实现。脚本中常用-f命令选项在执行某一文件之前检查它是否存在。##################################################################判断文件是否存在
#!/bin/sh
today=`date-dyesterday+%y%m%d`
file="apache_$today.tar.gz"
cd/home/chenshuo/shell
if;then
echo"OK"
else
echo"error$file">error.log
mail-s"failbackupfromtest"[email protected]
Linux下如何查看一个目录下的内容?
在Linux下我们使用ls命令来查看一个目录下的内容,如果单单使用ls则会显示当前目录下的内容,而如果ls/etc这样后跟一个目录的话,则会显示etc这个目录下的内容,可以去看看《Linux就该这么学》这本书的第二章,介绍了很多常用的命令,非常适合初学者。
如何判断linux是文件还是目录?
如果是脚本可以通过ls-l命令来判断,因为目录第一个字母是d。如果是编程可以参考以下内容。manstat;stat.h中有判断是什么文件的宏:S_ISREG()普通文件S_ISDIR()目录文件S_ISCHR()字符特殊文件S_ISBLK()块特殊文件S_ISFIFO()管道或FIFOS_ISLNK()符号连接(POSIX.1或SVR4无此类型)S_ISSOCK()套接字(POSIX.1或SVR4无此类型)具体可以参照APUE文件目录相关章节。下面给出一个具体的例子:#includestdio.h>#includesys/stat.h>intmain(intargc,char*argv){structstatbuf;if(argc2){printf("NeedParameter");return-1;}if(lstat(argv,buf)0){printf("lstaterrorfor%srn",argv);return;}if(S_ISDIR(buf.st_mode))printf("%sIsDIRrn",argv);elseif(S_ISREG(buf.st_mode))printf("%sIsFILErn",argv);return0;}