NextCloudにコマンドラインでアクセス[NextCloud]
今回は,NextCloudにコマンドラインでアクセスし,共有フォルダ内の情報参照とファイルのダウンロード・アップロードとファイルの共有リンクの発行を行う方法を紹介する.
共有フォルダ内の情報参照
LinuxやUnixのコマンドラインでcurlを使って情報を取得する.
構文
curl -u [ユーザー名]:[パスワード] 'http://[ホストサーバーのIPアドレス]/remote.php/dav/files/[ユーザー名]/[参照先ディレクトリ]' -X PROPFIND
上のコマンドを打ち込んだ後,ごちゃごちゃとしたXMLでディレクトリ内の情報が返ってくる.
パスワードを省略すると,パスワードの入力が求められる.
入力例
curl -u hoge-user:password 'http://hogehoge-cloud.com/remote.php/dav/files/hoge-user/Photos' -X PROPFIND
上の入力例を打ち込むと,アドレス“http://hogehoge-cloud.com”のファイルサーバーに存在する”Photos”ディレクトリ内の写真名(Nut.jpgなど)が出力される.
ホスト側のファイルをローカルにダウンロード
構文
curl -u [ユーザー名]:[パスワード] 'http://[ホストサーバーのIPアドレス]/remote.php/dav/files/[ユーザー名]/[参照先ディレクトリ]/[ダウンロード対象のファイル]' -X GET -o [保存先へのパス]
入力例
curl -u hoge-user:password 'http://hogehoge-cloud.com/remote.php/dav/files/hoge-user/Photos/Nut.jpg' -X GET -o Nut.jpg
上の入力例を打ち込むと,アドレス“http://hogehoge-cloud.com”のファイルサーバーにデフォルトで存在する”Photos”にある写真Nut.jpgがカレントディレクトリにダウンロードされる.
ローカルのファイルをホスト側にアップロード
構文
curl -u [ユーザー名]:[パスワード] 'http://[ホストサーバーのIPアドレス]/remote.php/dav/files/[ユーザー名]/[参照先ディレクトリ]/[アップロードしたいファイルの名前]' -T [アップロードしたいファイルのパス] -X PUT
入力例
curl -u hoge-user:password 'http://hogehoge-cloud.com/remote.php/dav/files/hoge-user/Photos/dog.jpg' -T dog.jpg -X PUT
上の入力例を打ち込むと,アドレス“http://hogehoge-cloud.com”のファイルサーバーにデフォルトで存在する”Photos”ディレクトリにdog.jpgという名前の画像がアップロードされる.
ファイルの共有と共有リンクの取得
ここから少しだけ難しくなる.ファイルの共有を行うために,まずGUI上の設定>共有>アプリからの共有APIの利用を許可する にチェックが入っていることを確認すること.
構文
curl -u [ユーザー名] -X GET 'http://[ホストサーバーのIPアドレス]/ocs/v2.php/apps/files_sharing/api/v1/shares?path=[参照先ディレクトリ]/[共有するファイル名]&shareType=3'' -H "OCS-APIRequest:true"
ファイルの共有では,/ocs/v2.php/apps/files_sharing/api/v1/sharesのOCS APIに複数のパラメータを渡す必要がある.入力するパラメータのpathは共有対象のファイルパスであり,shareTypeはファイル共有の範囲を指定するパラメータのことである(0=user; 1=group; 3=public link; 6=federated cloud share) .0か1を設定した場合は,shareWithのパラメータも設定する必要があるので注意.後ろについている"OCS-APIRequest:true"の意味は分からなかったがおそらく呪文のようなものであろう.
入力例
curl -u hoge-user -X POST 'http://hogehoge-cloud.com/ocs/v2.php/apps/files_sharing/api/v1/shares?path=/Photos/Nut.jpg&shareType=3' -H "OCS-APIRequest:true"
上の入力例を打ち込むと,アドレス“http://hogehoge-cloud.com”のファイルサーバーにデフォルトで存在する”Photos”ディレクトリ内にある写真Nut.jpgが共有化され,返り値として,その共有リンクが含まれたXMLが返ってくる.
共有リンクの取得
ファイルの共有と共有リンクの取得のコマンドからshareTypeのパラメータを省くと,ホスト側にあるファイルの共有リンクを確認することができる.当たり前のことだが,この機能を使うにはGUIかCLIを使って事前にファイル共有の設定を行っておく必要がある.
構文
curl -u [ユーザー名] -X GET 'http://[ホストサーバーのIPアドレス]/ocs/v2.php/apps/files_sharing/api/v1/shares?path=[参照先ディレクトリ]/[共有するファイル名]' -H "OCS-APIRequest:true"
入力例
curl -u hoge-user -X GET 'http://hogehoge-cloud.com/ocs/v2.php/apps/files_sharing/api/v1/shares?path=/Photos/Nut.jpg' -H "OCS-APIRequest:true"
上の入力例を打ち込むと,アドレス“http://hogehoge-cloud.com”のファイルサーバーに存在する”Photos”ディレクトリ内にある写真Nut.jpgの共有リンクが含まれたXMLが返ってくる.
参考
https://docs.nextcloud.com/server/12/NextcloudDeveloperManual.pdf
https://nextcloud.stylez.co.jp/api
ディスカッション
コメント一覧
まだ、コメントがありません