20200226のLinuxに関する記事は13件です。

Android でも Android アプリを開発したい(デバッグ編)

はじめに

Android でも Android アプリを開発したいの続きです。
デバッグを行うためのツール、adb のインストールから実際に Android Studio を使ってデバッガを起動するところまでを記載します。

注意点

PCが一台必要です。Android 単体では実施できません。
今回は Windows を使った手順を紹介します。

Android はWifiでルータ等に繋がっている必要があります。

Ubuntu の画面表示には XSDL を使用している前提で記載しています。

SDK Platform Tools のダウンロード

Windows で以下のサイトを開いて、SDK Platform Tools をダウンロードして解凍して下さい。

https://developer.android.com/studio/releases/platform-tools.html

解凍すると platform-tools フォルダに adb.exe ファイルがあるはずです。
後で adb.exe を使用します。

USBドライバのインストール

Windows に USB ドライバをインストールします。
後で Windows と Android 端末を USB ケーブルで接続しますが、
Windows から Android 端末を認識するために USB ドライバを使用します。
Android 端末を開発している会社ごとにドライバーが異なるため手順を書ききれません。
丸投げになりますが、以下のサイトを参考にインストールしてください。

https://developer.android.com/studio/run/oem-usb

USB デバッグの有効化をオンにする

Android 端末で開発者向けオプションをオンにしてから、USB デバッグの有効化をオンにします。
有効化するとデバッグモードで動作し、プログラムの途中で停止したりできるようになります。
Android 端末ごとに手順が違うので、書ききれないため以下のサイトを参考にして下さい。

https://developer.android.com/studio/debug/dev-options

Ubuntu に adb のインストール

Android 端末で UserLAnd または Termux の Ubuntu を立ち上げて LXTerminal 等から以下のコマンドを実行して adb をインストールして下さい。

# adb を Ubuntu にインストール(Termux の場合は sudo は不要です。UserLAnd の場合は sudo が必要です。)
sudo apt install -y adb

# adb をコピーして Android Studio から使えるようにする
cp /usr/bin/adb ~/Android/Sdk/platform-tools/

Android 端末をWifi経由でデバッグできるようにする

USB ケーブルで Windows と Android を接続して下さい。
ダイアログが出るのでOKボタンを押して下さい。

Windows マークを右クリックして「ファイル名を指定して実行」を選択してください。
名前 の入力欄に cmd と入力し Enter キーを押してコマンドプロンプトを立ち上げてください。

以下のように adb コマンドのある platform-tools ディレクトリまで cd コマンドで移動し、adb を使用して Android 端末にWifi経由で接続できるようにしてください。

# D:\platform-tools_r29.0.6-windows\ に platform-tools がある場合。ご自分の指定した解凍先に合わせて適宜読み替えて下さい。
cd D:\platform-tools_r29.0.6-windows\platform-tools

# Android 端末をWifi経由で接続できるように設定する
adb tcpip 5555

adb を実行し「restarting in TCP mode port: 5555」と出たら USB ケーブルを外して下さい。
ここで行った設定は Android を再起動するまで有効になります。

デバッガの実行

Ubuntu のデスクトップ環境を立ち上げ、それから Android Studio を立ち上げます。
(もし既に Android Studio を立ち上げてあった場合には一旦、終了してから立ち上げ直して下さい。)
メニューの下のコンボボックスの中に Android 端末名が出ていたら成功です。デバッグが可能な状態になっています。

実際にデバッガを試してみましょう。

まず適当にプロジェクトを生成したら、MainActivity.java を開いて下さい。
onCreate メソッドが見えるはずです。
メソッド内の1行目、super.onCreate~ と書かれている行、の左側の行番号の書かれている箇所の右側をクリックして下さい。丸が付いたでしょうか。この丸の位置で実行中のプログラムを一時停止しします。

続いてメニュー下の Android 端末名の4つ程右側のボタンに虫のような形をしたものがあります。その虫ボタンを押して下さい。
しばらく待つと、アプリが立ち上がり、Waiting For Debugger と出ます。
この時に Force Close は押さないで下さい。

Android の通知領域を開いて XServer XSDL is running をクリックします。(右側の Stop は触れないように気をつけて下さい)
Android Studio に戻り、しばらく待っていると Waiting For Debugger が自動的に消えてデバッグを開始します。
先程、丸を付けた行で停止しているはずです。

以上でデバッグを行うことが出来るようになります。
エミュレータが不要なのは利点と言えるかもしれません。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

仮想ブリッジの作成方法

[root@localhost ~]# cat /etc/redhat-release
CentOS Linux release 7.1.1503 (Core)

[root@localhost ~]# rpm -ivh openvswitch-2.11.0-3.el7.x86_64.rpm
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:openvswitch-1:2.11.0-3.el7       ################################# [100%]
[root@localhost ~]#
[root@localhost ~]# systemctl start openvswitch
[root@localhost ~]# systemctl status openvswitch
● openvswitch.service - Open vSwitch
   Loaded: loaded (/usr/lib/systemd/system/openvswitch.service; disabled; vendor preset: disabled)
   Active: active (exited) since 水 2020-02-26 22:19:37 JST; 4s ago
  Process: 2347 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
 Main PID: 2347 (code=exited, status=0/SUCCESS)

 2月 26 22:19:37 localhost.localdomain systemd[1]: Starting Open vSwitch...
 2月 26 22:19:37 localhost.localdomain systemd[1]: Started Open vSwitch.
[root@localhost ~]# 
[root@localhost ~]#  ovs-vsctl add-br ovs1
[root@localhost ~]#
[root@localhost ~]#  ovs-vsctl add-port ovs1 enp0s3
# ovs-vsctl show
[root@localhost ~]# ovs-vsctl show
0392cade-478d-4802-a4a3-190227e098d4
    Bridge "ovs1"
        Port "ovs1"
            Interface "ovs1"
                type: internal
        Port "enp0s3"
            Interface "enp0s3"
    ovs_version: "2.11.0"

https://cbs.centos.org/koji/buildinfo?buildID=25447

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

検証環境にてnpm scriptが通らずハマったのでメモ

したかったこと

リリース済みで本番稼働しているprojectの検証環境にフロント環境を整えたかった。

やったこと

  • 検証環境に入りgit clone
  • ローカルと同じようにnpm run dev

起きたこと

sh: next: コマンドが見つかりません

とりあえずエラー文を読んでみました。
(リポジトリー名をhogeに変えてます)

$ npm run dev
sh: next: コマンドが見つかりません
npm ERR! Linux 3.10.0-862.11.6.el7.x86_64
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "run" "dev"
npm ERR! node v6.16.0
npm ERR! npm  v3.10.10
npm ERR! file sh
npm ERR! code ELIFECYCLE
npm ERR! errno ENOENT
npm ERR! syscall spawn
npm ERR! hoge@1.0.0 dev: `next -p 8080`
npm ERR! spawn ENOENT
npm ERR! 
npm ERR! Failed at the hoge@1.0.0 dev script 'next -p 8080'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the hoge package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     next -p 8080
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs hoge
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls hoge
npm ERR! There is likely additional logging output above.
npm WARN Local package.json exists, but node_modules missing, did you mean to install?
npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/apps/hoge/npm-debug.log

Local package.json exists, but node_modules missing, did you mean to install?
package.jsonはあるけど、node_modulesがない、インストールしないのか?みたいなことを言われてるのでnode_modulesを用意します。
(node_modulesはignoreしてるからそりゃそうですw)

node_moduleの用意

npm install

念のためnode -vでversion確認しときます

$ node -v
v6.16.0

入っていることが確認できたので、再度npm run dev
(一番最初に、npm run devを実行したときはnpm installをする前なので、動かなくて当たり前でしたw)

さっきのエラーは消えましたが

$ npm run dev
npm ERR! Linux 3.10.0-862.11.6.el7.x86_64
npm ERR! argv "/usr/bin/node" "/usr/bin/npm" "run" "dev"
npm ERR! node v6.16.0
npm ERR! npm  v3.10.10
npm ERR! code ELIFECYCLE
npm ERR! hoge@1.0.0 dev: `next -p 8080`
npm ERR! Exit status 1
npm ERR! 
npm ERR! Failed at the hoge@1.0.0 dev script 'next -p 8080'.
npm ERR! Make sure you have the latest version of node.js and npm installed.
npm ERR! If you do, this is most likely a problem with the hoge package,
npm ERR! not with npm itself.
npm ERR! Tell the author that this fails on your system:
npm ERR!     next -p 8080
npm ERR! You can get information on how to open an issue for this project with:
npm ERR!     npm bugs hoge
npm ERR! Or if that isn't available, you can get their info via:
npm ERR!     npm owner ls hoge
npm ERR! There is likely additional logging output above.
npm ERR! Please include the following file with any support request:
npm ERR!     /var/www/apps/hoge/npm-debug.log

Failed at the hoge@1.0.0 dev script 'next -p 8080'.
scriptが失敗してると言われます

ローカル環境では動くが、テストサーバーやステージングサーバーでは動かない

調べていたら同じような状況の時にすべきことが載っている素晴らしいところにたどり着いたので
一つ一つ試してみました。

ログのエラー確認

先ほどのエラーに
Please include the following file with any support request:/var/www/apps/hoge/npm-debug.logとあったので

$ vi npm-debug.logで確認します
(error以降のみ表示してます)

[追記]
記事公開後にlogの確認は、一般的にはcat or less or tailのほうが良いと思いますと指摘をいただきました!
logの確認をエディタなどで開いてしまうと、改変や削除の危険があり危険だということみたいです。
詳しくはこちらを運用や調査でログを確認するときによく使うコマンド集(2020.02.27)

17 error Linux 3.10.0-862.11.6.el7.x86_64
18 error argv "/usr/bin/node" "/usr/bin/npm" "run" "dev"
19 error node v6.16.0
20 error npm  v3.10.10
21 error code ELIFECYCLE
22 error hoge@1.0.0 dev: `next -p 8080`
22 error Exit status 1
23 error Failed at the hoge@1.0.0 dev script 'next -p 8080'.
23 error Make sure you have the latest version of node.js and npm installed.
23 error If you do, this is most likely a problem with the hoge package,
23 error not with npm itself.
23 error Tell the author that this fails on your system:
23 error     next -p 8080
23 error You can get information on how to open an issue for this project with:
23 error     npm bugs hoge
23 error Or if that isn't available, you can get their info via:
23 error     npm owner ls hoge
23 error There is likely additional logging output above.

先ほどのエラー文とほぼ同じですね。

追加したパッケージがpackage.jsonに記載されているか

ローカルと検証環境それぞれで
$ vi package.jsonで出力しみましたが特に問題なかったです。

本番で必要なパッケージがdevDependenciesに書かれていないか

こちらも確認しましたが問題なかったです。

nodeとnpmのバージョンが同じかどうか

とりあえずversion確認

$ npm -v
3.10.10
$ node -v
v6.16.0

怪しいのと、かなり古いのもあったので、とりあえずローカルに合わせるために
$ nodebrew use v10.15.3
(nodeのversionに合わせてnpmのversionも上がるので強制的に同じversionになります)

[追記]
記事公開後、ローカルの環境に合わせるのは悪で、検証環境にローカルの環境を合わせる方がいいと指摘をいただきました。
もし、検証環境のversionを変更するなら「検証環境version upタスク」を作り慎重にやる方が良さそうです!
そして既にリリース済みの場合は、本番環境を元に環境構築を行うのが大前提のようです。(2020.02.27)

-bash: nodebrew: コマンドが見つかりません

nodebrewが入ってないということなので、入れます。

nodebrewのinstall

nodebrewの公式の通りにやってみます。
詳しくはこちら
(.bash_profileの部分は、SHELLの設定なので.bashrcや.zshrcに変えたりしてください)

$ curl -L git.io/nodebrew | perl - setup
$ vi .bash_profile
$ source ~/.bash_profile

再度実行します

$ nodebrew use v10.15.3
v10.15.3

nodeのversionをあげられました!
npmのversionも確認します。

$ npm -v 
6.4.1

無事npmのversionも上がりました!!
(今回は、npm scriptを通しただけなので実際にアクセスはまだできていません)

npm script実行

無事npm script通りました!!!!

まとめ

  • node_modulesを用意する
  • nodeとnpmのversionを揃える
  • nodebrewを入れる

以上です!

SpecialThanks: tweeeety

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bundle install時にsaasに関するエラーが発生した

発生したエラー

RUNTEQのRuby on Railsの技術試験を受験し、環境構築をしている際に以下のエラーが発生しました。

ターミナルで以下のコマンドを入力

ターミナル
bundle install --path=vendor/bundle

すると最後の段階で以下のエラーが発生

ターミナル
Ruby Sass has reached end-of-life and should no longer be used.

* If you use Sass as a command-line tool, we recommend using Dart Sass, the new
  primary implementation: https://sass-lang.com/install

* If you use Sass as a plug-in for a Ruby web framework, we recommend using the
  sassc gem: https://github.com/sass/sassc-ruby#readme

* For more details, please refer to the Sass blog:
  https://sass-lang.com/blog/posts/7828841

何やら使用しているものに関する注意書きのようです。
googleで翻訳をしてみると

エラーを解読

ターミナル
Ruby Sassはサポートが終了したため、使用しないでください。

* Sassをコマンドラインツールとして使用する場合、新しいDart Sassの使用をお勧めします
  主な実装:https://sass-lang.com/install

* SassをRuby Webフレームワークのプラグインとして使用する場合は、
  sassc gem:https://github.com/sass/sassc-ruby#readme

*詳細については、Sassブログを参照してください。
  https://sass-lang.com/blog/posts/7828841

とのこと、私はコマンドラインツールは別のものを使用しているため、今回は2番目のRaisでsassを使用する際に発生した注意みたいですね、記述通りにgithubに飛びREADMEを確認すると対応が書いてありました。

解決策

Gemfile
gem 'sassc'

こちらを記述すれば良いみたいです。
その後bundle installすると、無事完了しました。

原因

・sassって?
後日記載します

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

bundle install時にMySQLのエラーが発生

bundle install時にMySQLのエラーが発生

RUNTEQのRuby on Railsの技術試験を受験し、環境構築をしていた際に以下のエラーが発生しました。

入力したコマンド

ターミナル
bundle install --path=vendor/bundle

発生したエラー

ターミナル
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
/Users/atsukikomuro/.rbenv/versions/2.6.4/bin/ruby -I /Users/atsukikomuro/.rbenv/versions/2.6.4/lib/ruby/2.6.0 -r ./siteconf20200226-71382-91nqge.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
checking for rb_wait_for_single_fd()... yes
-----
Using mysql_config at /usr/local/opt/mysql@5.6/bin/mysql_config
-----
checking for mysql.h... yes
checking for errmsg.h... yes
checking for SSL_MODE_DISABLED in mysql.h... no
checking for MYSQL_OPT_SSL_ENFORCE in mysql.h... no
checking for MYSQL.net.vio in mysql.h... yes
checking for MYSQL.net.pvio in mysql.h... no
checking for MYSQL_ENABLE_CLEARTEXT_PLUGIN in mysql.h... yes
checking for SERVER_QUERY_NO_GOOD_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_NO_INDEX_USED in mysql.h... yes
checking for SERVER_QUERY_WAS_SLOW in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_ON in mysql.h... yes
checking for MYSQL_OPTION_MULTI_STATEMENTS_OFF in mysql.h... yes
checking for my_bool in mysql.h... yes
-----
Don't know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load
-----
-----
Setting libpath to /usr/local/opt/mysql@5.6/lib
-----
creating Makefile

current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2/ext/mysql2
make "DESTDIR="
compiling client.c
compiling infile.c
compiling mysql2_ext.c
compiling result.c
compiling statement.c
linking shared-object mysql2/mysql2.bundle
ld: library not found for -lssl
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [mysql2.bundle] Error 1

make failed, exit code 2

Gem files will remain installed in /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/gems/mysql2-0.5.2 for inspection.
Results logged to /Users/atsukikomuro/projects/133_atsuki1224_runteq_selection_rails_basic/vendor/bundle/ruby/2.6.0/extensions/x86_64-darwin-18/2.6.0/mysql2-0.5.2/gem_make.out

An error occurred while installing mysql2 (0.5.2), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.5.2' --source 'https://rubygems.org/'` succeeds before bundling.

In Gemfile:
  mysql2

解決策

以下のコマンドを入力後にbundle installを行うことで正常に終了しました。

ターミナル
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"

原因

後日記入します。

参考文献

RailsプロジェクトでMySQLがbundle installできなかった
bundle installでmysql2がエラーになる件

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Apache環境でのMysql周りのあれこれ(備忘録)

Mysqlにログイン

Command
> mysql -u ユーザー名(たとえばroot) -p

Mysqlにアクセスして、データベースの一覧をみる

Command
mysql> Show databases;   #このコマンドでデータベースを確認

Mysqlの特定のデータベースからデータを抽出し、ローカルに移す

1. Mysqlのデータファイル(Dumpファイル)を作成する

command
$ mysqldump -u root -p データベース名 > 抽出を反映したファイル名(任意) 
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

expectコマンドを使用してsshを自動化したい!

はじめに

題名に記載の通り、expectコマンドを使用してsshの自動化を目標に
記事を記載する。

具体的目標

現在自分の端末に入れてあるvagrantへのssh接続を自動化
及びいくつかの確認コマンドまで自動化する。

目標にあたって下記の記事を参考にさせて頂きました。
https://qiita.com/ine1127/items/cd6bc91174635016db9b#comments

①思考錯誤

手を動かしながら考えるのがモットーの為、取り敢えずコマンドを書いてみる。

#!/bin/sh

expect -c "
set timeout 5
spawn vagrant /usr/bin/ssh 
expect \"$\"
exit 
"

結果は上手くいかず、、、

spawn vagrant /usr/bin/ssh
上記の表現がおかしいのだろうとは思うが、
具体的にどうすれば良いかがわからない。。。

②思考錯誤

よくわからないが、vagrant sshで入るのではなく
IPアドレスでssh接続をすれば事例も沢山あるし、上手く行くのではないかと予想。。

cat Vagrantfile 
config.vm.network "private_network", ip: "192.168.33.10"

IPアドレスも確認し、いざSSH接続開始!!

ssh 192.168.33.10
192.168.33.10: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

無念、、
軽くググると権限関係が原因っぽい気がしないでもないが、、
知識不足の為、今日は終了。。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Docker Compose でホストとクライアントの両方にて Rails を起動したいそこのあなた!

なにこれ?

あんまりいないとは思うけど、Rails で Docker Compose を使用しているときにホスト側とクライアント側で Rails server を起動したいときはありませんか?自分の場合だと、System Test がどうしても Docker 環境のみで動作させる方法が見つけ出せなかったので、自分の場合 Rails を Ubuntu 環境でシステムテストを走らせて、それ以外は Docker 内のコンテナで動作させたいと思ったのでこういう環境が必要になった。そんなことをしようとしていると困るのが、(Rails のルート)/tmp/ に作られるファイルがホスト側とクライアント側で競合して、同時に起動できないという問題だった。そんなときに読んで解決できる糸口となったのが「DockerでVolumeをマウントするとき一部を除外する方法」だったので、自分もココにその軌跡をのこしておくことにする。

なにするの?

要は Rails 同時に起動できない原因は tmp フォルダが存在するからである。こいつさえなければ、ポートの競合とかはともかく、起動できるのだ。要はお互いが疎な関係になればいい。つまり、クライアントとホストの tmp フォルダが同期しなければいい。以下のコードは tmp フォルダだけはホストと動悸しないようにしてある。

version: '3'

volumes:
  rails_tmp_data:

services:
  as:
    build:
      context: ./
    ports:
      - 3333:3000
    volumes:
      - ./:/usr/src/app/
      - rails_tmp_data:/usr/src/app/tmp/
    command: 
      /bin/sh -c "yarn install --check-files && bundle install && rails db:create && rails db:migrate && rm -f /usr/src/app/tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0' --early-hints"

なお上記のコードは、要点だけに絞っている。そのため、コピペでは動かないのは、予めご了承いただきたい。

これでおしまい

ポートの設定を端折ってしまった。そこらへんは、ココでは記事にしない。途中で記事を書くのがめんどくさくなったからね。ググるかなにかしてください。そんじゃねー。

タイトルについて

スタパ斉藤マジリスペクト、というわけでなく、冗談抜きでこんなタイトルしか思いつかなかった。

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Ubuntuのtofuを日本語環境に直す

はじめに

日本語が文字化けして、四角に表示される(俗に言う、Tofu 豆腐 )であったため、日本語表示の環境を設定する。

環境

Ubuntu 16.04.5 LTS
Windows10
Vagrant

手順

現在の文字コードを確認すると、英語環境でした

echo $LANG
en_US.UTF-8

2つの日本語パッケージ(language-pack-ja-baselanguage-pack-ja)をaptでインストールする

sudo apt install language-pack-ja-base language-pack-ja

インストール済のロケールの一覧を表示して、ja_JP.utf8が表示される事を確認する

locale -a

ホームに移動して、.bashrcの一番下に下記を追加する

case $TERM in
    linux) LANG=C ;;
    *)     LANG=ja_JP.UTF-8;;
esac

解説
$TERMの環境変数には、ターミナルの種類がセットされる。因みに、自分の環境では、xterm-256colorがセットされている。ターミナルの種類がlinuxの場合は、ローカライゼーションをCにして、それ以外の場合は、日本語にしている。ターミナルの種類がlinuxというのは、クライアントからターミナルでSSH接続して使うのではなく、サーバーを直接触る場合になる。この場合、日本語にすると逆に文字化けを起こすようなので、英語環境にするために、Cをセットしている。サーバーを直接触る事はないよという場合であれば、LANG=ja_JP.UTF8の1行のみでもOK

.bashrcを実行して反映させる

source .bashrc

日本語表示ができました!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】フォルダを圧縮してリモートからローカルへファイル転送

フォルダをフォルダを圧縮してリモートからローカルへファイル転送

1.リモートにあるフォルダをZipファイル化

command
zip -r 圧縮後のフォルダ名(例えばwordpress.zip) 圧縮前のフォルダ名(例えばwordpress)

2.リモートにsftp接続をする

command
> sftp ログイン名@ホスト名(例えばroot@192.168.0.0)
> パスワード入力
sftp> get -r ディレクトリ名 

このようにすると、ローカルのホームディレクトリにフォルダが転送されているかと思います!

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

【Linux】teratermでDBに接続してSqlplusコマンドを打った後DB(oracle)にログインするまで

【Linux】teratermでDBに接続してSqlplusコマンドを打った後DB(oracle)にログインするまで

SQLDeveloperから応答が帰ってこない

SELECTもUPDATEも固まってしまって更新不可能。
直接DBに問い合わせてみることにする。

Teraterm

DBのいるip(XX.XX.XX.XX)
サーバーユーザ
サーバーパスワード
portはサーバ設定に合わせる

ログイン後

sqlplusを入力エンター
DBユーザ
DBパスワード
を順番に入力する

入れた!SQL打ってみることにする。To be continue...

課題:sqlplusを入力エンター後めっちゃ文字化けするのなんで?

Teraterm設定は両方UTF-8だった

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

Bashスクリプトメモ

bashメモ

MyDNS.JPのIPv4更新用スクリプトをシェルスクリプトで作ってみた(MyDNS.jp-v4-Update.sh)ので、そのときの知見をメモ

変数代入

スペースを開けずに代入する

hoge="hoge"

NG例

以下のようにスペースを開けて代入するとnot foundとかコマンドが見つかりませんとか怒られる

hoge = "hoge"

文字列長取得

数値として取れる模様

${#hoge}

文字列変数展開

頭にドルつける

echo $hoge

文字列結合

echo "もじ${hoge}もじ"

コマンド展開

その1

バッククォートで囲む

hoge=`echo "hoge"`

その2

$()で囲む。ネストするときに書きやすい

hoge=$(echo "hoge")

1と2を繋げたネストのサンプル

例えばip_resの内容は"127.0.0.1 200"の様になる

ip_res=`echo "\""$(curl inet-ip.info/ip -s -m 10 -w ' %{http_code}')"\""`

日付取得

hoge_date=`date "+%Y/%m/%d %H:%M:%S"`

if文

hoge="hoge"
if [ ${hoge} = "hoge" ]; then
  # ほにゃらら 
elif [ 1 -eq 1 ]; then
  # 数値と文字列で比較演算子が違う?
else
  # ふにゃらら
fi

関数

明示的に指定しない限りスコープの概念はないっぽい

fuga() {
  # ふがゃらら
}

fuga

echoでエスケープシーケンス

-eオプションを付ける

echo -e "\n"

参考記事

  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む

linuxの基本(ユーザー/グループ)

Linuxでのユーザー、グループの確認方法のまとめ

  • ユーザー
    • 一覧
      /etc/passwd
      ユーザー名の抽出
      cut -d: -f1 /etc/passwd
    • 情報変更
      usermod
    • パスワード変更
      passwd
    • 追加
      useradd
    • 削除
      userdel
  • グループ
    • 一覧
      /etc/group
      グループ名の抽出
      cut -d: -f1 /etc/group
    • 情報変更
      groupmod
    • 追加
      groupadd
    • 削除
      groupdel
  • このエントリーをはてなブックマークに追加
  • Qiitaで続きを読む