ECS の コンソールの新機能”Copy and Paste” #2

Alibaba Cloud ECS のVNC コンソールの新機能となる “Copy and Paste” について前回記事で基本機能を紹介しました。 今回はこの機能を使うことで文字列ではなくデータを送り込んでみたいと思います。  ネットワーク的に接続されていない Alibaba Cloud 上のサーバにデータを送り込めると何か便利です。

事前準備

まずは事前準備からです。  今回、送り込みたいファイル “a.out” を準備しました。 

いわゆる “Hello World” です。

コンパイルします。 “a.out” が出来上がりました。

file コマンドから “a.out” はバイナリデータのファイルであることが確認出来ます。

この”a.out”ファイルをテキスト文字列にエンコードします。 uuencode コマンドを利用し “a.out.txt” ファイルを作成します。

“a.out.txt”ファイルの中身は以下です。

begin 755 a.out
M?T5,1@(!0````````````,/@!````,4!``````````#`9```` M`````````$``.``)`$``'0`<``8````$````0`````````!``````````$`` M````````^`$#X0````````@``````````P````0````X@ M`#@"````````.`(````````<`````````!P``````````0`````````!```` M!0```````````````````````````````````#@(````````.`@````````` M`"````````$````&````N`T```````"X#2```````+@-(```````6`(````` M``!@`@``````````(````````@````8```#(#0```````,@-(```````R`T@ M#P0```````/!"``````````$````!````%0"
M5(```````!4@$0`````````1``````````$`````````%#E=&0$ M````]`8#T!@/0&````````/``````````\``````````0` M````````4>5T9`8````````````````````````````````````````````` M````````````$`````````!2Y71D!````+@-````````N`T@``````"X#2`` M`````$@"````````2`(````````!`````````"]L:6(V-"]L9"UL:6YU>"UX M.#8M-C0N<V\N,@`$````$`````$```!'3E4,"``````````0` M```4`````P```$=.50#K+(GAY8Y;*[>A25KYD/]Z?3GYX@$!0`` M```````````````````````````````````````````````````````````` M/0```"``````````````````````````"P```!(````````````````````` M````'P```!(`````````````````````````60```"`````````````````` M````````:````"``````````````````````````$````"(````````````` M`````````````&QI8F,N<V\N-@!P=71S`%]?8WAA7V9I;F%L:7IE`%]?;&EB M8U]S=&%R=%]M86EN`$=,24)#7S(N,BXU`%])5$U?9&5R96=I<W1E<E1-0VQO M;F5486)L90!?7V=M;VY?<W1A<G1?7P!?251-7W)E9VES=&5R5$U#;&]N951A M8FQE```````"``(```````(``0`!``$````0`````````'4::0D```(`,0`` M``````"X#2````````@`````````,`8```````#`#2````````@````````` M\`4````````($"````````@`````````"!`@``````#8#R````````8````! M``````````````#@#R````````8````#``````````````#H#R````````8` M```$``````````````#P#R````````8````%``````````````#X#R`````` M``8````&``````````````#0#R````````<````"``````````````!(@^P( M2(L%]0H@`$B%P'0"_]!(@\0(PP#_-;H*(`#_);P*(``/'T``_R6Z"B``:``` M``#IX/____\ET@H@`&:0```````````Q[4F)T5Y(B>)(@^3P4%1,C06*`0`` M2(T-$P$``$B-/>8```#_%88*(`#T#Q]$``!(C3VI"B``54B-!:$*(`!(.?A( MB>5T&4B+!5H*(`!(A<!T#5W_X&8N#Q^$``````!=PP\?0`!F+@\?A``````` M2(T]:0H@`$B--6(*(`!52"G^2(GE2,'^`TB)\$C!Z#](`<9(T?YT&$B+!2$* M(`!(A<!T#%W_X&8/'X0``````%W##Q]``&8N#Q^$``````"`/1D*(```=2]( M@SWW"2```%5(B>5T#$B+/?H)(`#H#?___^A(____Q@7Q"2```5W##Q^
M//#9@\?1```54B)Y5WI9O___U5(B>5(@^P0B7W\2(EU\$B-/90```#HN_[_ M_[@`````R<,/'T``05=!5DF)UT%5051,C25&!R``54B-+48'(!308G]28GV
M3″GE2(/L”$C!0/H5[TB%[70@,=L/’X0$R)^DR)]D2)[T'_%-Q( M@\,!2#G==>I(@\0(6UU!7$%=05Y!7\.09BX/'X0//#!(@^P(2(/$ M",,````!(2&5L;&\L('=O<FQD(0````$;SLX!@S^^$ M+/[__ZP_O__5$;____$;/_^0#<____+`$``!0````` M`````7I2``%X$`$;#`<(D`$'$!0````<````X/W__RL``````````````!0` M`````````7I2``%X$`$;#`<(D`$``"0````<````@/W__R``````#A!&#AA* M#PMW"(``/QH[*C,D(@`````4````1````'C]__\(```````````````<```` M7````'K^__\B`````$$.$(8"0PT&70P'"````$0!`@/[__V4````` M0@X0CP)"#AB.`T4.((T$0@XHC`5(#C"&!D@..(,'30Y`<@XX00XP00XH0@X@ M0@X80@X00@X(`!````#$````J/[__P(````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` M```````````````````````````````````````````````````````````` MP!@/`%`````````0`````````!``````````P`````````Z`0` M-0&````````&0````````"X#2```````!L M”:`````````,`-(```````'(/7^_V\` M````F`(````````%&#````````!@````````"X@H` M@@+!@%0`````````````````` M``,N\@```````"`````````!@`````````%``````````'```` M`````!<`````````T0¨C30C”¨C31C&¨C32C@¨C33C\/
M;P#B`P```````/G__V\``````P`````````````````````````````` M```````````````````````````````````````````````````````````` M`````````````````````````,@-(````````````````````````````!8% M```````````````````````````````````````````````````````````` M````````````"!`@``````!'0T,Z("A58G5N='4@-RXU+C`M,W5B=6YT=3%^ M,3@N,#0I(#<N-2XP```````````````````````````````````````````` M`````P`!`#@"`````````````````````````P`"`%0"```````````````` M`````````P`#`'0"`````````````````````````P`$`)@"```````````` M`````````````P`%`+@"`````````````````````````P`&`&`#```````` M`````````````````P`'`.(#`````````````````````````P`(`/`#
MP`)`!`$`````````````````````````P`*`-`$ M`````````````````````````P`+`.@$`````````````````````````P`, M```%`````````````````````````P`-`"`%```````````````````````` M`P`.`#`%`````````````````````````P`/`-0&```````````````````` M`````P`0`.`&`````````````````````````P`1`/0&```````````````` M`````````P`2`#`'`````````````````````````P`3`+@-(``````````` M`````````````P`4`,`-(````````````````````````P`5`,@-(``````` M`````````````````P`6`+@/(````````````````````````P`7```0(``` MP8!0(````````````````````````P9 M```````````````````!!#Q_P`````````````````````,`````@.
M&%.`````@`.`*`%A M`@`.`/`%```````````````````W`````0`8`!`0(````````0````````!& M`````0`4`,`-(`````````````````!M`````@`.`#`&```````````````` M``!Y`````0`3`+@-(`````````````````"8!#Q_P`````````````` M```````!````!#Q_P"@`````0`2`#0(```````` M````````````````!`#Q_P“N3`,`-(``` M``````````````"_`````0`5`,@-(`````````````````#(3+@- M(`````````````````#;```````1/0&#N`````0`6 M`+@/($0``$@.-&@40`` M(`````````````````````````!J0(70(``````````````````P M`0``$@````````````````````````!"`0``$``7`!`0(``````````````` M.0``$@/-0&``````````````````!)0$@`````````````````` M``````!H`0$7```0(`````````````````!U`0( M``````````"$`0``$0(7``@0(`````````````````"1`0``$0`0`.`&```` M````!`````````"@`0``$@`.`&`&````````90````````"Z````$``8`!@0 M(`````````````````!N`0``$@`.`#`%````````*P````````"P`0``$``8 M`!`0(`````````````````"\`0``$@`.`#H&````````(@````````#!`0`` M$0(7`!`0(`````````````````#-`0``(`````````````````````````#G M`0``(@````````````````````````"J`0``$@`+`.@$```````````````` M````8W)T<W1U9F8N8P!D97)E9VES=&5R7W1M7V-L;VYE<P!?7V1O7V=L;V)A M;%]D=&]R<U]A=7@`8V]M<&QE=&5D+C<V.3@`7U]D;U]G;&]B86Q?9'1O<G-? M875X7V9I;FE?87)R87E?96YT<GD`9G)A;65?9'5M;7D`7U]F<F%M95]D=6UM M>5]I;FET7V%R<F%Y7V5N=')Y`&AE;&QO+F,`7U]&4D%-15]%3D1?7P!?7VEN M:71?87)R87E?96YD`%]$64Y!34E#`%]?:6YI=%]A<G)A>5]S=&%R=`!?7T=. M55]%2%]&4D%-15](1%(`7T=,3T)!3%]/1D93151?5$%"3$5?`%]?;&EB8U]C M<W5?9FEN:0!?251-7V1E<F5G:7-T97)434-L;VYE5&%B;&4`<'5T<T!`1TQ) M0D-?,BXR+C4`7V5D871A`%]?;&EB8U]S=&%R=%]M86EN0$!'3$E"0U\R+C(N M-0!?7V1A=&%?<W1A<G0`7U]G;6]N7W-T87)T7U\`7U]D<V]?:&%N9&QE`%]) M3U]S=&1I;E]U<V5D`%]?;&EB8U]C<W5?:6YI=`!?7V)S<U]S=&%R=`!M86EN M`%]?5$U#7T5.1%]?`%])5$U?<F5G:7-T97)434-L;VYE5&%B;&4`7U]C>&%? M9FEN86QI>F5`0$=,24)#7S(N,BXU```N<WEM=&%B`"YS=')T86(`+G-H<W1R M=&%B`"YI;G1E<G``+FYO=&4N04))+71A9P`N;F]T92YG;G4N8G5I;&0M:60` M+F=N=2YH87-H`"YD>6YS>6T`+F1Y;G-T<@`N9VYU+G9E<G-I;VX`+F=N=2YV M97)S:6]N7W(`+G)E;&$N9'EN`"YR96QA+G!L=``N:6YI=``N<&QT+F=O=``N M=&5X=``N9FEN:0`N<F]D871A`"YE:%]F<F%M95]H9'(`+F5H7V9R86UE`"YI M;FET7V%R<F%Y`"YF:6YI7V%R<F%Y`"YD>6YA;6EC`"YD871A`"YB<W,`+F-O M;6UE;G0````````````````````````````````````````````````````` M```````````````````````````````````````````;`````0````(````` M````.`(````````X`@```````!P````````````````````!```````````` M````````(P````<````"`````````%0"````````5`(````````@```````` M````````````!````````````````````#$````'`````@````````!T`@`` M`````'0"````````)`````````````````````0```````````````````!$ M````]O__;P(`````````F`(```````"8`@```````!P`````````!0`````` M```(````````````````````3@````L````"`````````+@"````````N`(` M``````"H``````````8````!````"``````````8`````````%8````#```` M`@````````!@`P```````&`#````````@@````````````````````$````` M``````````````!>````____;P(`````````X@,```````#B`P````````X` M````````!0`````````"``````````(`````````:P```/[__V\"```````` M`/`#````````\`,````````@``````````8````!````"
M'H````$@0!````````!`$````````P``````````% M``````````@&"$````!````$(T0````` M``#0!````````!@`````````!0```!8````(`````````!@`````````C@`` M``$````&`````````.@$````````Z07```````````````````` M!````````````````````(D````!````!@``````````!0`````````%```` M````(````````````````````!``````````$`````````"4`````0````8` M(4````````@!0````````@````````````````````(```````` M``@`````````G0````$````&`````````#%,`4```````"B`0`` M````````````````$````````````````````*,````!````!@#4
M!@-0&````````"0````````````````````0````````````````` M``"I`````0````(`````````X`8#@!@!(````````````` M$L0````$````"`````````/0&```````` M]`8````````\!+\````! M`````@`````````P!P```````#`'````````"`$```````````````````@` M``````````````````#)````#@````,`````````N`T@``````"X#0`````` M``@(@`````````U0````\````#```` M`````,`-(```````P`T````````(````````````````````"(
M.$````&`````P````````#(#2```````,@-````````\`$````` M```&``````````@$"8`````0````,N\@ M``````"X#P```````$@````````````````````(``````````@````````` MZ@````$````#```````````0(````````!`````````0```````````````` M````"````````````````````/`````(`````P`````````0$"```````!0
M"`````````````````````$```````````````````#U`````0`` M`#`````````````````````0$“D!```` M``````$``````````0````(`````````````````````````0!````````#H M!0```````!L````K````"``````````8``````````D````#```````````` M`````````````"@6`````````P(```````````````````$````````````` M```````1`````P`````````````````````````K&````````/X````````` 8```````````!
`
end

VNC コンソールからデータ転送

まずは、Alibaba Cloud の VNC コンソールから ECS インスタンスにログインし、作業用フォルダに移動します。

vi を起動し、入力モードに移行します。

この状態で、 “Copy and Paste” 機能でデータの受け渡しを実行します。 2,000 文字が上限とのことで失敗です。

”a.out.txt” ファイルを wc コマンドで確認すると “11464” 文字もありました。

uuencode する前に gzip 圧縮かけますが、それでも”a.out.txt”のファイルサイズは “3268” です。

“split” コマンドで 800 byte 単位でファイルを分割します。

結果、”a.out.txtaa”,”a.out.txtab”,”a.out.txtac”,”a.out.txtad”,”a.out.txtae” という5つのファイルが生成できます。

5つのファイルの中身を “Copy and Paste”機能で vi で開いたファイルに張り付けていきます。

1つ目のファイル”a.out.txtaa”。

1つ目の貼り付けが終わった画面。 同じ要領で残り4つも張り付けていきます。

最終的に1つのファイルになりました。

元のファイルのMD5 checksum は以下。

VNC コンソールの”Copy and Paste” 機能で作ったファイルのchecksumは以下。どちらも”3bb33166fce33a66f23b16fd0d85381a” となっているので同じ内容のファイルと言えます。(Checksum は衝突の可能性が0ではないので絶対ということはないですが)

“uudecode” コマンドでデコードします。 “a.out”のファイルを復元出来ました。

ただし、このファイルはGZIPで圧縮されたままです。

GZIP の解凍し、file コマンドでします。 a.out は実行形式のバイナリファイルであることが確認できます。

“a.out” を実行します。 “Hello, world!” と出力されることが確認出来ました。

最終的に Alibaba Cloud ECS の VNC コンソールを利用し、バイナリファイルをインスタンス上に持ち込めることが確認出来ました。 まあ、一回に持ち込めるのが 2,000 文字しかないので実用で使える場面は限りなく少ないとは思いました。

なお、最初にデータとして送ろうと考えていたのは以下のプログラムでした(GIF動画)。 サイズが大きかったので断念。

昔懐かしい”sl” というプログラムです。 ubuntu では apt コマンドで簡単にインストールすることが出来ました。 

以上です。