iT邦幫忙

0

linux script語法應用問題

請教大家
有做一個檔案資訊的sh執行檔在ubuntu,有什麼方式可以讓一般使用者可以去呼叫該執行檔, 把它產出的csv檔案產生在user電腦上
感謝

player iT邦大師 1 級 ‧ 2020-08-03 23:51:18 檢舉
你是要問PHP間接執行 sh 檔嗎? (透過瀏覽器下載 cvs檔)
還是要讓user自己ssh登入到Linux上自跑完sh檔再自己下載回那個cvs
兩種做法不同
ektrontek iT邦研究生 2 級 ‧ 2020-08-04 06:54:02 檢舉
php執行sh檔的方法?有看到範例, 但產生cvs給使用者下載的那段要如何完成?請前輩指教 https://stackoverflow.com/questions/7397672/how-to-run-a-sh-file-from-php
0
japhenchen
iT邦高手 1 級 ‧ 2020-08-04 08:00:34

怎麼會想用shell script來做這件事?用Apache+PHP或.NET CORE不好嗎?

header('Content-type: text/csv');
header('Content-disposition: attachment;filename=MyVerySpecial.csv');
echo "aaa,bbb,ccc,ddd,eee";

至於PHP執行sh的方法...超簡單,記得sh檔要chown給www-data或chmod 777+x ,不然PHP的執行者www-data會沒有權限執行這個sh檔

$res = exec("sh /var/test/my.sh " . $_GET["username"] . "' ");
echo $res;
0
浩瀚星空
iT邦超人 1 級 ‧ 2020-08-04 11:43:56

其實並不太建議讓web語言來去跑伺服命令。

而且你這個還有下載的問題存在。也就是說會有機會有時間差的問題。
基本我會建議你用一個中間介接處理。而不要直接讓你的web去跑sh命令。

早期的做法給你參考。
1.web部份設計成預定下載的命令。一但啟用就會在某個目錄下生成一個命令檔。
2.設定一個排程,將其sh採用call sh的方式來處理。處理完後清空命令檔。
3.web設計一個表格,用來判斷命令檔及實際生成檔。但命令檔還存在則出現「等待處理」,當生成檔已出現命令檔不存在才出現「下載」

0
一級屠豬士
iT邦大師 1 級 ‧ 2020-08-04 16:56:01
ssh user@remote_host "bash -s script.sh" > /yourpath/output.csv

絕對路徑方式 
ssh user@remote_host "/scriptlocatin/script.sh" > /yourpath/output.csv

測試帳號密碼是否正確以及遠端呼叫是否正常執行,請自行修正 ls 所在路徑

ssh user@remote_host "/bin/ls -l" > /yourpath/lsoutput.txt

看更多先前的回應...收起先前的回應...
ektrontek iT邦研究生 2 級 ‧ 2020-08-11 22:14:06 檢舉

感謝, 我有找到類似範例如下

for i in /var/example/attachments/ver003/112/24 /var/example/attachments/ver003/10/13/12 /var/example/attachments/ver003/119/12; do 
    du $i -sh | awk -v p=$i '{print p,":",$1;}'
done

要如何將每個路徑指定一個簡稱給他,當輸出到csv的時候會顯示簡稱,而不是它實際路徑

你可以搭配 seq 先產生流水號

ektrontek iT邦研究生 2 級 ‧ 2020-08-14 19:57:08 檢舉

感謝
我使用=row(), 但我試著將此空白csv檔案傳到 linux主機上, 在透過**./run.sh > result.csv**, 但原本的流水號就變空白了
是否有其他建議

你用 result.csv , 是不是要把 seq 產生的數字,先加到後面.

ektrontek iT邦研究生 2 級 ‧ 2020-08-26 15:27:41 檢舉

感謝, 我後來是用錄製巨集的方式(兩個sheet檔案一起來, 透過巨集來貼資料)
但你說的有範例可參考嗎?

我要發表回答

立即登入回答