① 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>