阿里云 Cloud Shell 初体验
来源:追光小孩者     阅读:1095
灰太狼
发布于 2018-12-14 23:08
查看主页

今日登陆阿里云,发现 阿里云 推出了 Cloud Shell,本以为是 一个 模拟 终端的一个小工具,体(zhe)验(teng)一番,发现 竟然 是一个 真实的 被限制的 Linux环境,基于 Alpine Linux。好兴奋,有免费的测试机玩了。。。。

阿里云 Cloud Shell 初体验

常用命令都被软关联到了 busybox。测试了下 gcc、apt-get、yum、rpm统统没有,这样就有点鸡肋了,除了自带的工具啥都不能安装。好在默认安装了 Python、SSH、curl等工具,pip由于权限太低不能安装库。

阿里云 Cloud Shell 初体验

看了下 shell 中的核心命令 aliyun,功能还是很强大的,基本所有 业务都可以操作。

阿里云 Cloud Shell 初体验

之前 做过 域名API 相关的开发,拿域名入手,aliyun domain –help 可以看到 域名支持的操作,点击 链接可以进入 域名的API 文档。经过测试,API中的所有操作都可以 支持(很多在 命令帮助中 看不到),比方:QueryDomainList。

阿里云 Cloud Shell 初体验

阿里的域名导出不太好用,用 QueryDomainList 接口,做个 域名导出工具,练练手。根据文档,必需的参数 有 PageNum、PageSize。 执行 aliyun domain QueryDomainList –PageNum 1 –PageSize 10000,就获取到了 每页10000条,第一个 的域名数据。将 输出的 JSON 信息 上传到 服务器解决(比方PHP),生成 csv 下载。

阿里云 Cloud Shell 初体验

经过测试 PageSize 最大值为 1000,我 公司账号里有上万条域名数据,需要分多页下载。考虑到 HTTP 请求的限制,每次只上传 100 个域名信息。经过一下午的摸索,终于 完美的实现了这个小功能。经过优化,已经比较完美了。按照 Linux 下的惯例, 只要要复制一行 命令即用。

阿里云 Cloud Shell 初体验

最终生成的文件如下:

阿里云 Cloud Shell 初体验

完整的PHP源码如下:

<?php

/**
* 文件:domain.php
* 作者:mqycn
* 博客:http://www.miaoqiyuan.cn
* 源码:http://www.miaoqiyuan.cn/p/aliyun-cloud-shell
* 说明:阿里云 Cloud Shell 一键 导出所有域名
*/

define('APP_PATH', 'http://www.miaoqiyuan.cn/products/alishell/'); //安装目录
define('APP_URL', APP_PATH . 'domain.php'); //程序路径
define('APP_ACTION', isset($_GET['action']) ? $_GET['action'] : ''); //请求方法

//读取 YunShell 上传的信息
$data = json_decode(file_get_contents("php://input"), true);
if (!empty($data) &amp;&amp; isset($data['Data']) &amp;&amp; isset($data['Data']['Domain'])) {

switch (APP_ACTION) {

case 'tocsv':
//分页上传域名数据
if (!isset($_GET['key']) &amp;&amp; !is_numeric($_GET['key'])) {
die("Key Error!");
}
$tmp_key = $_GET['key'];
$csv_data = '';
foreach ($data['Data']['Domain'] as $item) {
foreach ($item as $val) {
$csv_data .= $val . "\t";
}
$csv_data .= "\n";
}
$file_name = $tmp_key . '.txt';
file_put_contents($file_name, $csv_data, FILE_APPEND);
echo "Update: " . APP_PATH . "${file_name}";
break;

default:
//根据 总页数 生成 脚本
if (isset($data['TotalPageNum']) &amp;&amp; is_numeric($data['TotalPageNum'])) {
$page_all = (int) $data['TotalPageNum'];
echo "\n\necho All:{$page_all}\n";
$tmp_key = date('Ymdhis');
for ($page_id = 1; $page_id <= $page_all; $page_id++) {
echo "\necho Download {$page_id}/${page_all}\n";
echo 'curl "' . APP_URL . '?action=tocsv&amp;key=' . $tmp_key . '" --data "`' . "aliyun domain QueryDomainList --PageNum ${page_id} --PageSize 100" . '`"';
}
}
break;
}

//结尾输出换行,防止影响提醒符
die("\n");
} else {
//直接访问,输出调用命令
echo 'curl ' . APP_URL . ' --data "`aliyun domain QueryDomainList --PageNum 1 --PageSize 100`"|bash';
}
?>

免责声明:本文为用户发表,不代表网站立场,仅供参考,不构成引导等用途。 系统环境 Linux
相关推荐
【nginx】十六、nginx高阶之lua详情
信息学竞赛打表犯规吗?
JMM - Java 内存模型
el-select远程搜索遇到的坑
Apache Tomcat 7.0.91 发布,Web 应用服务器
首页
搜索
订单
购物车
我的