今日登陸阿里云提岔,發(fā)現(xiàn) 阿里云 推出了 Cloud Shell,本以為是 一個 模擬 終端的一個小工具斧蜕,體(zhe)驗(teng)一番跨细,發(fā)現(xiàn) 竟然 是一個 真實的 被限制的 Linux環(huán)境,基于 Alpine Linux躺酒。好興奮押蚤,有免費的測試機玩了。阴颖。活喊。。
常用命令都被軟關(guān)聯(lián)到了 busybox量愧。測試了下 gcc钾菊、apt-get、yum偎肃、rpm統(tǒng)統(tǒng)沒有煞烫,這樣就有點雞肋了,除了自帶的工具啥都不能安裝累颂。好在默認(rèn)安裝了 Python滞详、SSH、curl等工具紊馏,pip因為權(quán)限太低不能安裝庫料饥。
看了下 shell 中的核心命令 aliyun,功能還是很強大的朱监,基本所有 業(yè)務(wù)都可以操作
之前 做過 域名API 相關(guān)的開發(fā)岸啡,拿域名入手,aliyun domain –help 可以看到 域名支持的操作赫编,點擊 鏈接可以進(jìn)入 域名的API 文檔巡蘸。經(jīng)過測試,API中的所有操作都可以 支持(很多在 命令幫助中 看不到)擂送,比如:QueryDomainList悦荒。
阿里的域名導(dǎo)出不太好用,用 QueryDomainList 接口嘹吨,做個 域名導(dǎo)出工具搬味,練練手。根據(jù)文檔,必須的參數(shù) 有 PageNum身腻、PageSize产还。 執(zhí)行 aliyun domain QueryDomainList –PageNum 1 –PageSize 10000匹厘,就獲取到了 每頁10000條嘀趟,第一個 的域名數(shù)據(jù)。將 輸出的 JSON 信息 上傳到 服務(wù)器處理(比如PHP)愈诚,生成 csv 下載她按。
最終生成的文件如下:
完整的PHP源碼如下:
<?php
/**
* 文件:domain.php
* 作者:mqycn
* 博客:http://www.miaoqiyuan.cn
* 源碼:http://www.miaoqiyuan.cn/p/aliyun-cloud-shell
* 說明:阿里云 Cloud Shell 一鍵 導(dǎo)出所有域名
*/
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) && isset($data['Data']) && isset($data['Data']['Domain'])) {
switch (APP_ACTION) {
case 'tocsv':
//分頁上傳域名數(shù)據(jù)
if (!isset($_GET['key']) && !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:
//根據(jù) 總頁數(shù) 生成 腳本
if (isset($data['TotalPageNum']) && 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&key=' . $tmp_key . '" --data "`' . "aliyun domain QueryDomainList --PageNum ${page_id} --PageSize 100" . '`"';
}
}
break;
}
//結(jié)尾輸出換行,防止影響提示符
die("\n");
} else {
//直接訪問炕柔,輸出調(diào)用命令
echo 'curl ' . APP_URL . ' --data "`aliyun domain QueryDomainList --PageNum 1 --PageSize 100`"|bash';
}
?>