2013-03-28 60 views
1

我有一個小腳本,它會生成兩個RANDOM數字,並添加它們並提示用戶(如果SUM>或<一個特定值) - 繼續或不。Jenkins - 如何與腳本輸入交互 - 運行期間

因此,腳本是:

bash-3.00$ cat use_random.sh 
#!/bin/bash 

func() 
{ 
a=$RANDOM 
b=$RANDOM 
sum=`expr $a + $b` 

echo A = $a 
echo B = $b 
echo 
echo Sum of A + B is : $sum 
} 

choice=y; 
until [ "$choice" == "n" ]; 
do 
# call func 
echo ---------------------------------------------; echo; 
func; 

echo Sleeping for 3 seconds... 
sleep 3; 
echo - 
echo "IF SUM value is greater than 3500, then press 'n' otherwise, press 'y'"; echo; 
echo -n "Do you want to continue (y/n)? : "; read choice; 
echo ---------------------------------------------; echo; 
done 

bash-3.00$ 

幾個腳本的運行std.output是:

bash-3.00$ ./use_random.sh 
--------------------------------------------- 

A = 20359 
B = 15866 

Sum of A + B is : 36225 
Sleeping for 3 seconds... 
- 
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y' 

Do you want to continue (y/n)? : n 
--------------------------------------------- 

bash-3.00$ 

的bash-3.00 $

bash-3.00$ ./use_random.sh 
--------------------------------------------- 

A = 18058 
B = 20395 

Sum of A + B is : 38453 
Sleeping for 3 seconds... 
- 
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y' 

Do you want to continue (y/n)? : n 
--------------------------------------------- 

bash-3.00$ 

的bash-3.00 $ 的bash-3.00 $

bash-3.00$ ./use_random.sh 
--------------------------------------------- 

A = 6016 
B = 13489 

Sum of A + B is : 19505 
Sleeping for 3 seconds... 
- 
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y' 

Do you want to continue (y/n)? : y 
--------------------------------------------- 

--------------------------------------------- 

A = 25837 
B = 3852 

Sum of A + B is : 29689 
Sleeping for 3 seconds... 
- 
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y' 

Do you want to continue (y/n)? : y 
--------------------------------------------- 

--------------------------------------------- 

A = 7565 
B = 3220 

Sum of A + B is : 10785 
Sleeping for 3 seconds... 
- 
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y' 

Do you want to continue (y/n)? : y 
--------------------------------------------- 

--------------------------------------------- 

A = 32092 
B = 22688 

Sum of A + B is : 54780 
Sleeping for 3 seconds... 
- 
IF SUM value is greater than 3500, then press 'n' otherwise, press 'y' 

Do you want to continue (y/n)? : n 
--------------------------------------------- 

bash-3.00$ 

正如你看到的上面,當我跑第2次,這給了SUM值小於3500的劇本,所以我按下 「N」(這是一個必須的用戶提示/輸入爲我的自動化需要,在這裏我拿這個SUM例子,並提示只是爲了把我的情況),當它低於3500,然後我按「Y」,N號。的時間,直到總和值低於3500.

現在,怎麼能在Jenkins做到這一點?

我不能使用的參數生成插件(A和B變量是隨機生成的,所以我不希望用戶通過它),即同時調用腳本下面的技巧不要求:

回聲「輸入「| script_or_command

script_or_command < file_with_input

其次,用戶的輸入以繼續(按壓Y或N)取決於這些2隨機變量的值的總和。用戶不知道在最後按下「n」出現/退出劇本之前,他有多少次按「y」。換句話說,用戶可以預先硬輸入輸入(因爲他的輸入取決於運行時)。注意:我不想讓AI足以使用SUM值作爲用戶輸入繼續進行決策,這是我想要在Jenkins中完成的要求。

任何想法,我可以得到這個工作,以防萬一我在詹金斯稱我的腳本「use_random.sh」?

千兆AKS

回答

0

您將無法測試,這是任何一種連續檢測系統,除非你使用某種類型的「AI」的。在你的情況下,這應該相對簡單 - 只需編寫第二個腳本調用第一個腳本,提取SUM的值(例如,使用grep),並生成輸入以相應地發送到第一個腳本。

0

其實我只會同意你,只有少數這樣的腳本。

但是,我有幾百個這樣的腳本提示來自用戶的「基於運行時間條件」的輸入。對於例如:當用戶說 - 每天以不同的順序運行某些東西(5個文件/命令/ etc)時,由於/對於項目/應用程序,這些東西(文件/命令)本質上是隨機的。選擇這些值以繼續/運行另一個腳本/ ssh到1-N ssh服務器取決於這些因素。考慮這種情況:即,我得到了Shell選擇「菜單」選項,其中文件/命令/應用程序可以在#4或在接下來的幾天它可以在#13或15.因此,取決於什麼OS的當前狀態或應用程序是我想弄明白,簡而言之:

而不是看看有多少其他的方式 - 我們可以做到這一點使用詹金斯的工作,是否有任何簡單/明確的方式來運行究竟是什麼我想在上面(即Jenkins在控制檯輸出窗口腳本運行期間提示「用戶輸入」... - 非常類似腳本,當我們在Linux/Unix $提示符下運行它時)?
感謝您的回覆。

相關問題