腳本里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;}