老兵の知恵

この記事は約3分で読めます。

サーバー探検中、/usr/local/binにgccを見つけた。
まさかインストールされているとは思わなかった。
ライトプランでも、こいつが動けば夢が広がりそうである。

ただ管理用にgccが入っているだけでちゃんと動くかは分からないし、そもそもライトプランでSSHは使えない。
でもやっぱり見つけた以上は動かしてみたいので、物は試しでチャレンジしてみるしかない。
さくらインターネットは公式にシェルスクリプトは動作可能なので、以下を作ってアップロードしてみた。

[exec.cgi]

#!/bin/sh
echo "Content-Type: text/plain"
echo ""
echo "$(ls)"
echo "OK"

超簡単なスクリプトだけど20年ぶりのスクリプトだ。
ちゃんと動くか心配していたけど、exec.cgiにアクセスするとファイルリストがきちんと取れた。
そういえば、自分が借りているサーバーのディスク容量が気になったので、ちょっと書き換えて実行してみる。

echo "$(df -h)"
----
結果
Filesystem      Size    Used   Avail Capacity  Mounted on
/dev/vtbd0p2     19G    5.4G     12G    30%    /
devfs           1.0K    1.0K      0B   100%    /dev
/dev/vtbd0p4     29G    4.6G     22G    17%    /var
/dev/vtbd1      1.9T    269G    1.5T    15%    /home
OK

どうやら2TBのディスクが載っているみたいだね。やっぱり全員分のディスク容量は用意されていないようだ。
今のところ1ユーザ1GBも使ってないみたい。自分は既に6GBだけど。。。
(ちなみにサーバコントロールパネルによると、このサーバーはAMD EPYC-Rome Processor 24GBで稼働しているそうだ)

これならイケそうだとワクワクしながら、以下に書き換えて再アクセス!

echo "$(gcc -v)"
----
結果

OK

うぅ結果が空欄で返ってきた。やっぱり動かないよね。。。
が、念のためサーバーのエラーログを見ると

AH01215: gcc version 9.4.0 (FreeBSD Ports Collection)

おぉ!エラーとしてちゃんとバージョンが返ってきた。
コンパイルできそうなので早速ソースを用意してアップロードしてみる

[hello.c]

#include <stdio.h>

int main(void)
{
	printf("Content-Type: text/plain\n\n");
	printf("Hello World!\n");
	return 0;
}

そしていよいよコンパイル実行だ!

echo "$(gcc -o hello.cgi hello.c)"
AH01215: compilation terminated.

エラーログとともに、hello.cgiができた!
早速ブラウザからhello.cgiをアクセスすると

Hello World!

ちゃんと動いたよ!
C言語で作った64bitネイティブ版のCGIプログラム。人生初でちょっと嬉しい!
サポート外でも工夫すれば動かせる環境を用意してくれるのはいいね。
機会があったら怪しげなツールでも入れてみよう。

うんうんSSHが使えなくても、なんとかなるもんである。
またまたハッカーに一歩近づいた気持ちになった。

コメント