今回もiPhoneで動作するシェルであるa-Shellを使います。前回に続いてネットワーク関係です。後半で解説するファイルのコピーに関してはインターネットに接続されていなくてローカルネットワーク(自宅のLANのみ、会社内のみ)があれば動作します。また、IPv4でもIPv6接続どちらで接続されていてもかまいません(今回の説明はIPv4接続となっています)。なお、ファイル転送はセキュリティの関係でできない場合もあります。
ファイルコピーの前に、まずは簡単なブラウザの起動からやりましょう。

ブラウザを起動する

 a-ShellはiPhoneに入っているいくつかのブラウザを起動することができます。その際、いずれのブラウザでも起動する際にはURLを指定する必要があります。任意のURLを指定してブラウザを起動できるので便利な使い方がありそうです。なお、起動するブラウザがアプリとして入っていない場合にコマンドを入力してもエラーにはならず何も起こりません。

 以下のように入力すると、この連載の目次ページがSafariブラウザで表示されます。

safari https://news.mynavi.jp/techplus/series/natonakucommand/

 ちなみにGoogle Chromeをインストールしてある場合はコマンドでgooglechromeの後にURLを指定するとWebサイトを表示することができます。

googlechrome https://news.mynavi.jp/techplus/series/natonakucommand/

 他にもFirefoxやBrave、Operaなどのブラウザも以下のように利用できます。内部ブラウザはa-Shellアプリ内でWebページを表示することができます。

・Firefox

firefox https://news.mynavi.jp/techplus/series/natonakucommand/

・Brave

brave https://news.mynavi.jp/techplus/series/natonakucommand/    

・内部ブラウザ

internalbrowser https://news.mynavi.jp/techplus/series/natonakucommand/

iPhoneローカル上のファイルをメモ帳にコピー

 今度はa-Shellで作成したローカルファイルを他のアプリなどにコピーしてみます。ここで使用するのはmacOSにもあるopenコマンドです。例えば以下のようにカレントディレクトリにa.txtというファイルを作成したとします。

echo 5963 > a.txt

このように作成したファイルをメモ帳など他のアプリに持っていくには以下のように指定します。

open a.txt

コマンドを実行すると以下の図のような画面になります。a.txtをコピーしたいアプリを選択します。
ここではメモ帳を選択してみましょう。

すると、メモ帳にa.txtの内容が入ります。

画像の場合は以下のようになります。画像を保存するを選択すると、openで指定した画像ファイルが写真(アプリ)にコピーされます。

サーバー上のデータをダウンロード

 次にサーバー上のデータをダウンロードしてみましょう。a-Shellにはcurlコマンドがあるので、これを利用します。(wgetは入っていません)
ここでは、この連載の目次ページのHTMLファイルをダウンロードしてカレントディレクトリに保存してみましょう。以下のように入力します。

curl https://news.mynavi.jp/techplus/series/natonakucommand/ > index.html

内容を確認してみましょう。ここではlessコマンドを使い内容を確認してみましょう。lessの後に内容を確認したいファイル名(ファイルパス)を指定します。lessが起動して内容が表示されます。カーソルキーの上下で行単位の表示、スペースキーで次のページに移動します。qのキーを押すと終了します。

less index.html

curlがあれば、サーバー上のデータを手軽に持ってくる事ができますので、様々な用途に利用できるでしょう。

ネットワーク上のMacにファイルをコピー

 それでは最後にiPhone内にあるファイルをネットワーク上にあるMacにコピーしてみましょう。ネットワーク越しのファイル転送だと、面倒な気もするかもしれません。ファイルを転送するには古くはFTP、その後はscp、最近ではrsyncなどが利用されます。
a-ShellにはFTP、rsyncが用意されていませんがscpコマンドはあります。
scpコマンドなどが入っているかどうかを確認するにはgrepを使うと楽です。以下のようにして確認できます。

help -l | grep rsync
help -l | grep scp

scpはセキュリティの関係でできればrsyncを使う方がいいのですが、a-Shellにはrsyncは入っていないのでscpを使うしかなさそうです。
scpコマンドはcpコマンドと同じですが、接続先のネットワークのアドレスを指定する部分が異なる点です。ドメイン名でもIPアドレスでもどちらでも可能です。IPアドレスはIPv4, IPv6とも指定することができます。ここではIPv4のアドレスが割り当てられているものとして説明します。iPhoneもコピー先のマシン(Mac/Windows/UNIX等)も家庭内か社内の同一ネットワーク内にあるものとします。

まずは、a-Shellで作成したファイルをネットワーク越しにあるMacに転送してみます。以下のようにiPhone内の~/Documentsフォルダにファイルを作成しておきます。ここではa.txtというファイル名にしています。

cd ~/Documents
echo sampleText123 > a.txt

このファイルを同じネットワーク内にあるIPアドレス192.168.11.8のMacにコピーします。転送先のMacのユーザー名(アカウント)はweedとします。この部分は必要に応じて転送先のMacのユーザー名に変更してください。Mac側は絶対パスで転送先のディレクトリ/ファイル名を指定します。scpコマンドを以下のように入力します。

scp a.txt weed@192.168.11.8:/Users/weed/Desktop/a.txt

入力すると初回のみ確認のメッセージが表示されます。yesと入力します。次に転送先のMacのユーザー名のパスワードを尋ねてきますので入力します。パスワードが正しければファイルの転送が始まります。間違ってしまった場合は再度パスワードの入力が求められます。(最大6回まで)

容量が少ないファイルなのですぐに転送は終了します。転送先のマシンにファイルがコピーされているはずです。

なお、DHCPによりパソコン等にダイナミックにIPアドレスが割り当てられる場合は注意が必要です。ルーターの設定にもよりますが、電源がオフになっていたりすると異なるマシンで同じIPアドレスが割り当てられることがあります。すると、上記のようなscpコマンドを実行した際に認証されずエラーになります。このような場合には.sshディレクトリ内にあるknown_hostファイルを編集して該当するIPアドレスの行を削除します。といっても分からない場合は.sshディレクトリごと削除しても構いません(rm -r .ssh)。削除したら再度認証のメッセージが表示されるだけです。

この記事は
Members+会員の方のみ御覧いただけます

ログイン/無料会員登録

会員サービスの詳細はこちら