當前位置:首頁 » 編程軟體 » shell腳本如何發送

shell腳本如何發送

發布時間: 2025-03-11 00:14:37

Ⅰ 如何編寫安卓程序執行shell腳本

在Android系統中執行shell腳本,確保用戶擁有修改shell的許可權是首要步驟。為了實現這一目標,我們通常需要使用process對象來運行命令,如下所示:

public void execShell(String cmd) {
try {
//設置許可權
Process p = Runtime.getRuntime().exec("su");
//開始執行shell腳本
OutputStream os = p.getOutputStream();
//將命令發送到shell腳本
os.write((cmd + "\n").getBytes());
os.flush();
//關閉輸出流
os.close();
//等待shell腳本執行完成
int status = p.waitFor();
//處理結果
BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line;
while ((line = in.readLine()) != null) {
Log.d("Shell", line);
}
in.close();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}

在上述代碼中,首先通過Runtime.getRuntime().exec("su")命令獲取一個名為p的Process對象,這一步驟確保了我們有執行shell腳本的許可權。接著,通過p.getOutputStream()獲取輸出流,並使用os.write((cmd + "\n").getBytes())將命令發送到shell腳本。命令發送完畢後,通過os.flush()進行刷新,隨後關閉輸出流。最後,通過p.waitFor()等待shell腳本執行完成,並通過p.getInputStream()獲取輸入流,讀取shell腳本的輸出。

值得注意的是,為了確保腳本的輸出能夠被正確捕獲,我們需要將Log.d("Shell", line)插入循環中,這樣我們就能在日誌中看到shell腳本執行的每一行輸出。同時,處理異常也是必不可少的,以免在執行過程中出現問題。

在實際開發中,編寫shell腳本時需要遵循Android系統的規定,避免執行可能帶來安全風險的操作,確保應用的穩定性和安全性。

Ⅱ 如何在shell腳本里使用sftp批量傳送文件

如何在shell腳本里使用sftp批量傳送文件

主要步驟如下:

1.為運行shell腳本的本地用戶生成密鑰對
2.將其中的公鑰分發到sftp欲登錄的遠程伺服器上
3.編寫並以上面的本地用戶運行shell腳本

一.生成密鑰對

在shell腳本中使用sftp時必須用到密鑰對(公鑰和私鑰).可使用下列方式生成(SSH 2.X版
本),這里本地用戶記為:local_user:

$ ssh-keygen –d

屏幕提示:

Generating public/private dsa key pair.

Enter file in which to save the key (/home/local_user/.ssh/id_dsa):
# 按回車保存為: /home/local_user/.ssh/id_dsa,即當前用戶local_user的私鑰

Enter passphrase (empty for no passphrase):
# 按回車,表示讀取密鑰時不需要密鑰的密碼

Enter same passphrase again:
# 確認密鑰的密碼,必須和上面的輸入相同

Your identification has been saved in /home/local_user/.ssh/id_dsa.
# 私鑰保存信息

Your public key has been saved in /home/local_user/.ssh/id_dsa.pub.
# 公鑰保存信息

The key fingerprint is:
ec:41:e8:08:38:0b:f8:1e:bc:92:98:32:fc:d7:69:7d ...
# 密鑰指紋

二.分發公鑰

為了使用密鑰,必須將公鑰分發到欲登錄的遠程伺服器上,這里遠程伺服器記為remote_hos
t,欲登錄的遠程用戶記為remote_user

1.公鑰到欲登錄的遠程伺服器的遠程用戶的家目錄下,例如:

id_dsa.pub到remote_host:/home/remote_user/.ssh/

若目錄/home/remote_user/.ssh/不存在,請先創建之.

2.將來的公鑰文件改名為authorized_keys

3.修改公鑰文件的訪問許可權

chmod 644 authorized_keys

三.示例

目標:

從遠程伺服器remote_host:/home/remote_user/data/
傳送下列文件到本地計算機的當前目錄: /home/local_user/data/:

20050201
20050202
20050203
20050204
20050205

方式1: 批模式

sftp提供了一個選項-b,用於集中存放sftp命令(該選項主要用於非交互模式的sftp).因此
對於上面的目標,可以生成如下的命令文件:

cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit

這里存為: sftp_cmds.txt

說明: get命令前加一個"-"以防止其執行錯誤時sftp執行過程被終止.

以下為腳本示例:

#!/bin/sh
sftp -b ./sftp_cmds.txt remote_user@remote_host

方式二:

#!/bin/sh
sftp remote_user@remote_host << EOF
cd /home/remote_user/data/
lcd /home/local_user/data/
-get 20050201 .
-get 20050202 .
-get 20050203 .
-get 20050204 .
-get 20050205 .
quit
EOF

Ⅲ 請用shell寫個腳本,當apache的進程數大於10的時候發郵件給運維部

#!/bin/bash
count=`ps -ef | grep [a]pache | wc -l`
if [ $count -gt 10 ]; then
mail -s 標題 [email protected] <<!!
內容
.

!!
fi
###################
說明一下,count計算的時候,grep後面改成你真正的apache的進程名,[a]pache首字母加了個方括弧是為了防止把grep本身的進程數也算進去。
mail後面的標題,地址和內容改成你自己需要的內容。
在內容的後面那個.不要漏掉。
count=後面的引號是鍵盤上數字1左邊那個重音符號,而不是單雙引號那個引號。

這個腳本有個前提,你本機的sendmail服務是可用的,否則這個腳本是發不出郵件的。
至於sendmail服務,那就是另外的話題了。需要配置的話請google一下。

Ⅳ shell腳本實現執行http的一個post或者get方法是怎麼實現的吖

你好,可以通過curl和wget兩個命令發送http請求:
一、get請求:
1、使用curl命令:
curl 「http://www..com」 如果這里的URL指向的是一個文件或者一幅圖都可以直接下載到本地
curl -i 「http://www..com」 顯示全部信息
curl -l 「http://www..com」 只顯示頭部信息
curl -v 「http://www..com」 顯示get請求全過程解析
2、使用wget命令:
wget 「http://www..com」也可以

二、post請求
1、使用curl命令(通過-d參數,把訪問參數放在裡面):
curl -d 「param1=value1¶m2=value2」 「http://www..com」
2、使用wget命令:(--post-data參數來實現)
wget --post-data 『user=foo&password=bar』 http://www..com
以上就是Linux模擬Http的get或post請求的方法了,這樣一來Linux系統也能向遠程伺服器發送消息了。

示例:wget --post-data="" http://mcs-inner.99bill.com/mcs-gateway/mcs/task/clear

三、curl (可直接發送格式化請求例如json)
示例:目標url:http://fsc-inner.99bill.com/acs/deposit/{srcRef}
命令:curl -H "Content-type: application/json" -X POST -d '{"srcRef":"1002"}'http://fsc-inner.99bill.com/acs/deposit/1002

熱點內容
u3dandroid 發布:2025-03-11 03:22:41 瀏覽:356
ftp如何在網站上顯示圖片 發布:2025-03-11 03:17:41 瀏覽:929
不懂加工怎麼看數控車床配置 發布:2025-03-11 02:54:33 瀏覽:596
埋點系統存儲方案 發布:2025-03-11 02:41:20 瀏覽:442
編程要很久 發布:2025-03-11 02:41:10 瀏覽:195
筆記本電腦播放mp4時提醒伺服器運行失敗 發布:2025-03-11 02:40:32 瀏覽:440
吉利星瑞尊貴版配置有哪些 發布:2025-03-11 02:34:33 瀏覽:889
ecs中怎麼配置slb 發布:2025-03-11 02:33:17 瀏覽:719
vb圖片保存到資料庫 發布:2025-03-11 02:31:05 瀏覽:842
元件符號編譯器 發布:2025-03-11 02:30:12 瀏覽:73