① php 使用curl 執行遠程伺服器的一個shell腳本
可以啊,curl可以,http也可以啊
首先
假如遠程伺服器有這些文件php腳本和shell腳本(分析數據的腳本)是在目標伺服器上
a.php
data.php
data.sh
然後在a腳本裡面運行shell命令,exec("cd~/php/&&php./data.php&");
這樣php就會運行data.php可以在data.php裡面在運行sh腳本
或者直接在a.php裡面運行sh腳本
然後把計算好的數據存入資料庫
這樣你就可以用http或者curl去激活a.php.然後分析數據的腳本也就運行了
大概了解沒?
大哥你看明白沒啊 是要給遠程發送shell命令不是本地執行好吧?
遠程動態輸入命令?貌似不太安全啊~!
可以這樣。a.php?cmd=cd~/&&shdata.sh
然後a.php裡面這樣寫
exec("{$_GET["cmd"]}");
太危險,相當不推薦
可以做好命令,然後去執行
a.php?cmd=a
然後a.php裡面這樣寫
switch($_GET["cmd"]}){
case"a":
exec("cd~/php/&&php./data.php&");
break;
case"b":
exec("cd~/php/&&php./xxxx.php&");
break;
}
② 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
③ centos根據php的curl請求post過來的參數執行對應的sh腳本
你得有個動態HTTP伺服器,ThinkPHP、Spring、tomcat+servlet、Django、Flask甚至是最簡單的Python SimpleHTTPServer或者自己用C語言實現一個,不管怎麼實現的,運行你的伺服器監聽本地某個埠,然後對到來的請求編寫相應的業務處理代碼,解析請求參數,執行對應操作例如運行某個腳本。然後將響應(Response)返回給客戶端。
如果你對後端開發一竅不通,你需要先學習HTTP協議原理和工作過程,以及至少一款後端框架的使用。
④ 如何編寫一個shell腳本
問題:
1、請求在線api, 獲取json格式的返回結果
2、解析json裡面的一個值
3、將該值存儲到文件
開發准備:
1、shell
快速入門:
#!/bin/sh
cd ~
mkdir shell_tut
cd shell_tut
for ((i=0; i<10; i++)); do
touch test_$i.txt
done
創建一個文件夾, 並在裡面新建10個文件
2、curl
使用curl請求網路, 並獲取返回值
curl基本用法:
$ curl www.sina.com
直接返回網頁內容
$ curl -o [文件名] www.sina.com
將網頁內容存儲到文件中, 相當於wget命令
賦值操作:
response=$(curl www.sina.com)
echo $response
注意: =前後沒有空格
jq
jq是命令行解析json的很好的工具
安裝
直接到官網下載Linux64版本(我是用本地下載好後傳上伺服器的, 之前直接在伺服器用wget下載一直報錯Segmentation fault, 折騰好久~)
將其到bin目錄
cp jq-linux64 /usr/bin/jq
使用
然後就可以愉快的使用jq命令了:
可直接查看官網Tutorial
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5'
返回的是一個json數組列表
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.'
使用.直接指向json的根節點
curl 'https://api.github.com/repos/stedolan/jq/commits?per_page=5' | jq '.[0]'
[0]為取數組的第0位的對象
jq '.[0] | {message: .commit.message, name: .commit.committer.name}'
可用過連續的.操作獲取對應json對象中的屬性值, 上面的命令將會生成一個{message: "....", name: "...."}的json對象.
shell文件讀寫
1、寫
方式一:
將ll的內容寫入fileName這個文件中
>是覆蓋, >>是在後面追加
ll >fileName
但是在書寫.sh腳本的時候, 需要增加echo
echo ll>fileName
2、讀
while read LINE
do
echo $LINE
done<fileName
fileName是即將讀取的文件名
⑤ 幾個linux指令求教一下。下面三步都幹了啥
下面注釋你參考下吧,因為wr這個命令沒見過,不知道幹啥的,可能只是記錄後面執行的命令
#!/bin/sh
# 輸出1
echo "1"
# mv是移動,把 S99start_app.sh 移動到 /etc/init.d
wr mv S99start_app.sh /etc/init.d
# chmod 是 修改許可權的, x是執行, 意思是給文件加上執行許可權
wr chmod + x /etc/init.d/S99start_app.sh
# sleep 是等待, 等待1秒
sleep 1
echo "2"
# cd 是切換目錄, 意思是切換到/opt/curl/lib 目錄
cd /opt/curl/lib
# ln 是建立連接的意思,-s是軟連接,大致相當於快捷方式,意思是建立一個libcurl.so.4.5.0連接叫 libcurl.so 下同
ln - s libcurl.so.4.5.0 libcurl.so
ln - s libcurl.so.4.5.0 libcurl.so.4
sleep 1
echo "3"
cd / opt
# chmod 上面說了是修改許可權,-R是對目標目錄以及子目錄所有文件,這個意思是ppp文件夾和ppp文件夾下的所有文件都加上執行許可權
chmod + x - R ppp
sleep 1
# exit 是退出的意思,就是退出當前腳本
exit 0
⑥ 如何編譯libcurl
1. android
1.1配置
將curl源文件加到在Android源代碼external/curl/中。創建shell腳本configure.sh,並把它放到external/curl/中。
腳本內容如下:
#!/bin/sh SDK_ROOT=/home/nudtzxm/android_sdk export PATH="$SDK_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin:$PATH" ./configure --host=arm-linux CC=arm-eabi-gcc \ CPPFLAGS="-I $SDK_ROOT/system/core/include -I $SDK_ROOT/hardware/libhardware/include -I $SDK_ROOT/hardware/libhardware_legacy/include -I $SDK_ROOT/hardware/ril/include -I $SDK_ROOT/dalvik/libnativehelper/include -I $SDK_ROOT/frameworks/base/include -I $SDK_ROOT/frameworks/base/opengl/include -I $SDK_ROOT/external/skia/include -I $SDK_ROOT/out/target/proct/generic/obj/include -I $SDK_ROOT/bionic/libc/arch-arm/include -I $SDK_ROOT/bionic/libc/include -I $SDK_ROOT/bionic/libstdc++/include -I $SDK_ROOT/bionic/libc/kernel/common -I $SDK_ROOT/bionic/libc/kernel/arch-arm -I $SDK_ROOT/bionic/libm/include -I $SDK_ROOT/bionic/libm/include/arch/arm -I $SDK_ROOT/bionic/libthread_db/include -I $SDK_ROOT/bionic/libc/kernel/common -I $SDK_ROOT/bionic/libc/kernel/arch-arm -I $SDK_ROOT/system/core/libcutils -I $SDK_ROOT/out/target/proct/generic/obj/STATIC_LIBRARIES/libcutils_intermediates -I $SDK_ROOT/out/target/proct/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates -I $SDK_ROOT/system/core/include/arch/linux-arm/ -include $SDK_ROOT/system/core/include/arch/linux-arm/AndroidConfig.h" \ CFLAGS="-nostdlib -fno-exceptions -fpic -ffunction-sections -funwind-tables -fstack-protector -fno-short-enums -Wno-multichar -msoft-float -march=armv5te -mtune=xscale -D__ARM_ARCH_5__ -D__ARM_ARCH_5T__ -D__ARM_ARCH_5E__ -D__ARM_ARCH_5TE__ -mthumb-interwork -DANDROID -fmessage-length=0 -W -Wall -Wno-unused -Winit-self -Wpointer-arith -Werror=return-type -Werror=non-virtual-dtor -Werror=address -Werror=sequence-point -DSK_RELEASE -DNDEBUG -g -Wstrict-aliasing=2 -finline-functions -fno-inline-functions-called-once -fgcse-after-reload -frerun-cse-after-loop -frename-registers -DNDEBUG -UDEBUG -mthumb -Os -fomit-frame-pointer -fno-strict-aliasing -finline-limit=64" \ LIBS="-L$SDK_ROOT/out/target/proct/generic/obj/lib -L$SDK_ROOT/out/target/proct/generic/obj/STATIC_LIBRARIES/libcutils_intermediates/libcutils.a -lc -lm -ldl $SDK_ROOT/prebuilt/linux-x86/toolchain/arm-eabi-4.4.0/bin/../lib/gcc/arm-eabi/4.4.0/interwork/libgcc.a"
進入到curl的根目錄,運行這個腳本:
1.2 Make
進入curl的根目錄,運行make curl命令:
1.3 參數配置
您可能會看到參數配置是復雜的。如何設置呢?你應該閱讀curl/ Android.mk的注釋。
2 iOS
我改變了參數的配置,所以配置命令是:
./configure –disable-shared –host=arm-apple-darwin10
3.視窗
打開的vc6curl.dsw,並選擇「DLL Release」來編譯。您會在CURL_ROOT\lib\DLL-Release
發現libcurl.dll和libcurl_imp.lib。
4.關於頭文件
curl/include的頭文件,只在成功配置後使用,頭文件在不同的平台上是不同的。
⑦ 如何使用curl命令獲取glance鏡像列表信息
[root@controller ~]# source /etc/keystone/admin-openrc.sh
[root@controller ~]#curl -i -H "X-Auth-Token:`openstack token issue | awk -F '|' ' / id / {print $3}'`" http://controller:9292/v2/images
參考一下,命令比較麻煩,可以拆分來看(比如openstack token issue),一點一點理解
⑧ linux在rc.local文件裡面用不了curl
可以把rc.local里所有命令,腳本的標准錯誤和輸出定位到某個文件里,看看到底哪裡錯了。
comand >> /root/local.log 2 > &1
也可把curl放在最後一行。
⑨ 如何使用linux命令打開網頁
1、首先,連接相應linux主機,進入到linux命令行狀態下,等待輸入shell指令。
⑩ Linux的sh腳本訪問php網頁的輸出或者返回值怎麼弄.求教
用curl命令就可以哦,
<div>
http://blog.nciaer.com我博客地址,上面有curl的教程
</div>