- 投稿日:2019-11-15T23:49:48+09:00
Linux コマンド一覧表
機能に続いてLinuxのコマンドについてまとめようと思います。
詳細コマンド
manコマンド(コマンド内容表示)
基本の前にmanコマンドを書きます。
対象のコマンドの使い方や使用できるオプションを調べることができますので。
最初に知っておくべきです。$ man コマンド名
その他詳細内容コマンド
コマンド 説明 オプションまたは使用例 whatis コマンドの簡単な説明を表示 which コマンドの保存先を調べる type コマンドの保存先を調べる -a 全ての保存先を表示 apropos コマンドをキーワードで検索 find ファイルの検索。find ディレクトリ名 -name ファイル名で検索できる。 -name ファイル名
-typeタイプ(d: ディレクトリ、f: ファイル、l: シンボリックリンク)
-mtime 変更日時(-3で3日前から現在、+3で3日前よりも前)
-sizeサイズcal カレンダーの表示 例) cal 11 2018 date 日付の表示 pwd いまいるディレクトリの表示(print working directory) 基本コマンド(常用コマンド)
コマンド 説明 使用例 オプション cd ディレクトリ(フォルダ)移動 cd 移動フォルダ名 ls フォルダの内容をリスト形式で表示する 対象フォルダに移動して、ls -a システムファイル表示
-l ロングフォーマット
-d 指定のディレクトリ情報のみ表示mv ファイルを移動 mv 移動元 移動先 cp ファイルやフォルダをコピーする cp 移動元 移動先 -i インタラクティブモード
-p ファイルの属性を維持
-R 丸ごとコピー
-v コピーされたファイル名の表示clear 消さずに画面を綺麗にする - mkdir フォルダを作成する mkdir 名 -p 入れ子のフォルダを一気に作成 touch ファイルを作成する touch 名 rmdir 空のフォルダを削除する rmdir 名 rm ファイルやフォルダを削除する rm 名 -r ディレクトリとディレクトリ内の全てのファイルを削除。確認は無し pwd 現在いる位置を表示する - find ファイルの検索をする find / -name 名 cat ファイルの内容を表示する cat ファイル名 -n 行数表示 diff ファイルとファイルの内容の違いを表示する diff 旧名 新名 grep 指定した文字列がテキスト内に存在した場合その行を抽出する grep "検索したい文字" * ファイル名 chmod ファイルやフォルダのアクセス権限を変更する chmod 権限ファイル名 chown ファイルやフォルダのオーナーやグループを変更する chown 変更したいユーザー名 変更したいファイル名 history コマンドの履歴を表示する - ln ファイルやフォルダにリンクを設定する ln リンク元 リンク先 man コマンドのマニュアルを表示する man コマンド apropos manページの内容を検索する apropos キーワード less テキストファイルを閲覧する less ファイル名 more ファイルをページ単位で閲覧する more ファイル名 ユーザー管理
コマンド 説明 useradd/adduser ユーザーを新規作成する deluser ユーザーを削除する groupadd グループを新規作成する groupdel グループを削除する chfn ユーザー情報を変更する システム管理
コマンド 説明 free 空きメモリや、使用中メモリを表示する last 最近ログインしたユーザー名を表示する finger ユーザー情報を表示する ネットワーク関連を設定したい時
コマンド 説明 route ルーティングの表示や設定を行う ftp ファイルをFTPで転送する ssh sshでログインする ショートカット
少し違いますが便利な知識です。
ショートカットキー 説明 ↑ ↓ コマンド履歴を順に表示 tabキー フォルダやファイル名の予測変換 Ctr(control) + a カーソルを先頭に Ctr + e カーソルを終端に Ctr + b カーソルを一文字戻す Ctr + f カーソルを一文字進める Ctr + d カーソル位置の文字を消す Ctr + h カーソル位置の左側の文字を消す Ctr + w カーソル位置の左側の単語を消す Ctr + r コマンド履歴の中で検索する
- 投稿日:2019-11-15T22:40:12+09:00
【Terraform_01】鍵を使ってパスワードレスでSSH
はじめに
タイトルそのまま、公開鍵と秘密鍵を使ってパスワードレスでEC2にSSHします。
ただそれだけなのですが、Terraformを使って構築したのが原因でハマりました。。
戒めの備忘録です。環境はmac。先に結論
Terraformのaws_key_pairはimportしかサポートしていないので、パスワード無しで生成した公開鍵を使ってコード化する必要がある。
参考にしたサイト
下記サイトを参考にさせて頂きました、この場を借りてお礼申し上げます
Terraformを使わない場合の手順は下記サイトをご参考頂ければと思います!sshの鍵をTerraformで扱う
SSH公開鍵認証で接続するまで
ssh-copy-idで公開鍵を渡す
sshで公開鍵認証を使ってアクセスする
作業開始
公開鍵と秘密鍵の生成
$ pwd /Users/okome/.ssh $ ssh-keygen -t rsa -f okome_id_rsa $ ls -l -rw------- 1 okome okome 1843 Nov 15 20:30 okomne_id_rsa -rw-r--r-- 1 okome okome 412 Nov 15 20:30 okomne_id_rsa.pub $ cat okome_id_rsa.pub ssh-rsa #ハッシュ値は省略します秘密鍵(okomne_id_rsa)のパーミッションは600が必須です。
コード化
keypair.tf(拡張子が.tfであればファイル名は任意)で作成した公開鍵を指定します。
コードはgithubにupしておきました。リソース名の"this"とkey_nameの"this-key"は任意の値でOKです。
# okome_id_rsa.pub(password less) resource "aws_key_pair" "this" { key_name = "this-key" public_key = "ssh-rsa #ハッシュ値は省略します" }コード化の後はterraform applyでEC2インスタンス(とVPCとかのNW)を構築します。
.ssh/configの作成
SSHを楽にすべく、以下のファイルを作成します。
$ /Users/okome/.ssh $ vi /Users/okome/.ssh/config Host okome01 HostName [EC2インスタンスに付与したパブリックIP] Port 22 User ec2-user #AmazonLinux2の場合 IdentityFile ~/.ssh/okomne_id_rsaEC2インスタンスにSSH
$ ssh okome01 __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ 40 package(s) needed for security, out of 72 available Run "sudo yum update" to apply all updates. -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory [ec2-user@ip-xx-xx-xx-xx ~]$パスワード聞かれなかった!成功!
おわりに
SGでアクセスを制限してるのでパスワードレスでも良いと思いますが、強固にしたい場合はパスワードあったほうが間違いないと思います。
その場合は鍵を生成する際にパスワードを入力すれば、それがそのままSSH実行時のパスワードになります。$ ssh-keygen -t rsa -f okome_id_rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again:ハマった原因は以前作成したパスワード付きの鍵をコード化してそれをすっかり忘れてた、ですね。。
一旦コメントに書くことで応急処置しましたが、できれば技術で解決したい!
ただしやり方はわからないw簡単ですが以上です
- 投稿日:2019-11-15T22:40:12+09:00
【Terraform_01】keypairを使ってパスワードレスでSSH
はじめに
タイトルそのまま、公開鍵と秘密鍵を使ってパスワードレスでEC2にSSHします。
ただそれだけなのですが、Terraformを使って構築したのが原因でハマりました。。
戒めの備忘録です。環境はmac。先に結論
Terraformのaws_key_pairはimportしかサポートしていないので、パスワード無しで生成した公開鍵を使ってコード化する必要がある。
参考にしたサイト
下記サイトを参考にさせて頂きました、この場を借りてお礼申し上げます
Terraformを使わない場合の手順は下記サイトをご参考頂ければと思います!sshの鍵をTerraformで扱う
SSH公開鍵認証で接続するまで
ssh-copy-idで公開鍵を渡す
sshで公開鍵認証を使ってアクセスする
作業開始
公開鍵と秘密鍵の生成
$ pwd /Users/okome/.ssh $ ssh-keygen -t rsa -f okome_id_rsa $ ls -l -rw------- 1 okome okome 1843 Nov 15 20:30 okomne_id_rsa -rw-r--r-- 1 okome okome 412 Nov 15 20:30 okomne_id_rsa.pub $ cat okome_id_rsa.pub ssh-rsa #ハッシュ値は省略します秘密鍵(okomne_id_rsa)のパーミッションは600が必須です。
コード化
今回はkeypair.tf(拡張子が.tfであればファイル名は任意)に、先ほど作成した公開鍵を指定します。
コードはgithubにupしておきました。リソース名の"this"とkey_nameの"this-key"は任意の値でOKです。
$ cat keypair.tf # okome_id_rsa.pub(password less) resource "aws_key_pair" "this" { key_name = "this-key" public_key = "[okome_id_rsa.pub]の値をコピペする" }コード化の後はterraform applyでEC2インスタンス(とVPCとかのNW)を構築します。
.ssh/configの作成
SSHを楽にすべく、以下のファイルを作成します。
$ /Users/okome/.ssh $ vi /Users/okome/.ssh/config Host okome01 HostName [EC2インスタンスに付与したパブリックIP] Port 22 User ec2-user #AmazonLinux2の場合 IdentityFile ~/.ssh/okomne_id_rsaEC2インスタンスにSSH
$ ssh okome01 __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ 40 package(s) needed for security, out of 72 available Run "sudo yum update" to apply all updates. -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory [ec2-user@ip-xx-xx-xx-xx ~]$パスワード聞かれなかった!成功!
おわりに
SGでアクセスを制限してるのでパスワードレスでも良いと思いますが、強固にしたい場合はパスワードあったほうが間違いないと思います。
その場合は鍵を生成する際にパスワードを入力すれば、それがそのままSSH実行時のパスワードになります。$ ssh-keygen -t rsa -f okome_id_rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again:ハマった原因は以前作成したパスワード付きの鍵をコード化してそれをすっかり忘れてた、ですね。。
一旦コメントに書くことで応急処置しましたが、できれば技術で解決したい!
ただしやり方はわからないw簡単ですが以上です
- 投稿日:2019-11-15T22:40:12+09:00
【Terraform-01】keypairを使ってパスワードレスでSSH
はじめに
タイトルそのまま、公開鍵と秘密鍵を使ってパスワードレスでEC2にSSHします。
ただそれだけなのですが、Terraformを使って構築したのが原因でハマりました。。
戒めの備忘録です。環境はmac。先に結論
Terraformのaws_key_pairはimportしかサポートしていないので、パスワード無しで生成した公開鍵を使ってコード化する必要がある。
参考にしたサイト
下記サイトを参考にさせて頂きました、この場を借りてお礼申し上げます
Terraformを使わない場合の手順は下記サイトをご参考頂ければと思います!sshの鍵をTerraformで扱う
SSH公開鍵認証で接続するまで
ssh-copy-idで公開鍵を渡す
sshで公開鍵認証を使ってアクセスする
作業開始
公開鍵と秘密鍵の生成
$ pwd /Users/okome/.ssh $ ssh-keygen -t rsa -f okome_id_rsa $ ls -l -rw------- 1 okome okome 1843 Nov 15 20:30 okomne_id_rsa -rw-r--r-- 1 okome okome 412 Nov 15 20:30 okomne_id_rsa.pub $ cat okome_id_rsa.pub ssh-rsa #ハッシュ値は省略します秘密鍵(okomne_id_rsa)のパーミッションは600が必須です。
コード化
今回はkeypair.tf(拡張子が.tfであればファイル名は任意)に、先ほど作成した公開鍵を指定します。
コードはgithubにupしておきました。リソース名の"this"とkey_nameの"this-key"は任意の値でOKです。
$ cat keypair.tf # okome_id_rsa.pub(password less) resource "aws_key_pair" "this" { key_name = "this-key" public_key = "[okome_id_rsa.pub]の値をコピペする" }コード化の後はterraform applyでEC2インスタンス(とVPCとかのNW)を構築します。
.ssh/configの作成
SSHを楽にすべく、以下のファイルを作成します。
$ /Users/okome/.ssh $ vi /Users/okome/.ssh/config Host okome01 HostName [EC2インスタンスに付与したパブリックIP] Port 22 User ec2-user #AmazonLinux2の場合 IdentityFile ~/.ssh/okomne_id_rsaEC2インスタンスにSSH
$ ssh okome01 __| __|_ ) _| ( / Amazon Linux 2 AMI ___|\___|___| https://aws.amazon.com/amazon-linux-2/ 40 package(s) needed for security, out of 72 available Run "sudo yum update" to apply all updates. -bash: warning: setlocale: LC_CTYPE: cannot change locale (UTF-8): No such file or directory [ec2-user@ip-xx-xx-xx-xx ~]$パスワード聞かれなかった!成功!
おわりに
SGでアクセスを制限してるのでパスワードレスでも良いと思いますが、強固にしたい場合はパスワードあったほうが間違いないと思います。
その場合は鍵を生成する際にパスワードを入力すれば、それがそのままSSH実行時のパスワードになります。$ ssh-keygen -t rsa -f okome_id_rsa Generating public/private rsa key pair. Enter passphrase (empty for no passphrase): Enter same passphrase again:ハマった原因は以前作成したパスワード付きの鍵をコード化してそれをすっかり忘れてた、ですね。。
一旦コメントに書くことで応急処置しましたが、できれば技術で解決したい!
ただしやり方はわからないw簡単ですが以上です
- 投稿日:2019-11-15T18:03:49+09:00
PHP→Pythonの呼び出し時に'ascii' codec can't encode characters in position xx-xx: ordinal not in range(128)
Pythonでスクリプト書いて、PHPから呼び出したい。
Python側をコンソール上で動作確認して、
PHPでフロント作って呼び出そうとしたらこれ'ascii' codec can't encode characters in position 28-32: ordinal not in range(128)ascii?コンソール上で動くけど?
locale変更してもダメ試しにpython実行コマンドで
LC_ALL=\"ja_JP.utf8\" python test.pyのように定義したら動いた。
分からんわこんなん。
P.S. 上司ありがとう。
- 投稿日:2019-11-15T12:55:35+09:00
http要求を行い、ステータスコードが200の場合のみ内容を保存する
背景
curl
にて機能を作っていたが、「要求が失敗した場合も-o
(output option)に保存されてしまう」問題が有りシェルスクリプト化しました。コード
#!/bin/bash # ./curl+.sh {url} {output} URL=$1 OUTPUT=$2 TMPOUTPUT=/tmp/$(date +%Y%m%d_%H%M%S_%3N) status=`curl -o $TMPOUTPUT -li $URL -w '%{http_code}' -s` if test $status -eq 200 ; then cp $TMPOUTPUT $OUTPUT echo 1 else echo 0 fi
- 投稿日:2019-11-15T07:49:22+09:00
【fishシェルのテンプレ】$PATHにパスを追加する(「Googleの中の人」ver)
テンプレ
解説はインラインのコメントを参照してください。
# The begin/end block limits the scope of all variables except $PATH # begin/endは(-xでexportしている)$PATH以外のすべての変数スコープを限定するよ begin # 例として/opt/binを追加します set new_path "/opt/bin" # -gx for global (not limited to this begin/end block) and exportable (part of # the environment for child processes) # -gxはグローバル化(begin/endブロック以外の場所からも使えるようにする)とエクスポート(個プロセスでも使える環境変数にする)の為に使っているよ if not contains "$new_path" $PATH set -gx PATH "$new_path" $PATH end end経緯
最近、google-cloud-sdkを対話スクリプトでインストールした際、次のような対話項目がありました。
Enter a path to an rc file to update, or leave blank to use [/home/dev-user/.config/fish/config.fish]:
この手のパス追加はB系シェルを前提としたものが多いので、fishシェルを使っている身としては嬉しい限りです。上記config.fishに追加されていた設定スクリプトを開いたところ、私のような輩を想定していたのか各行に初心者向けのコメントがついていたので、感動して記事にしました。(コメントの英語部分はオリジナルそのままです。)
ありがとうございます、Googleの中の人
- 投稿日:2019-11-15T00:51:13+09:00
Linuxについて
SQLと扱いが混乱してきたので
少し備忘録を書きます。Linuxとは
OSの一種、MacやWindowsと同じ枠組みです。
主にサーバー用として使うOSです。
ちなみにLinux自身にも色々種類があります。
Linuxカーネルを基本にして
様々な企業・団体が独自のLinuxディストリビューション(改造Linux)を再配布しています。利点
- スペックの低いPCでも使える
- 基本無料である
Linux用語
Linuxカーネル(カーネル)
リーナス・トーバルズ氏が開発したLinuxのこと。
基本構成は下記の通り
- プロセス管理
- プロセス間通信
- メモリ管理
- ファイルシステム
- ネットワーク
- カーネルプリミティブ
パッケージ
Linuxが採用しているアプリケーションの配布形態です。
インストールは色々存在しRPM(RPM Package Manager)
Yum(Yellowdog Updater Modified)
Apt(Advanced Package Tool)
DNF(Dandified Yum)
などと呼ばれるパッケージ管理ツールを使用して、パッケージをダウンロードしてインストールします。
rpmコマンドでパッケージをインストールしたい場合は以下のようなコマンドです。$ rpm -ivh 「パッケージ名」ディレクトリ
フォルダのこと
シェル
シェルは、Linuxへの命令文を入力するためのアプリケーションの総称です。
Linuxの代表的なシェルはbashであり
sh、ksh、zsh、csh、tcshなどもシェルです。コマンド
実行命令文のこと主な一覧はこちら
- cd:ディレクトリの移動
- cp:ファイル・ディレクトリのコピー
- rm:ファイル・ディレクトリの削除
- vi:エディタの起動・ファイルの作成
- rpm:パッケージのインストール
- make:ソースファイルのコンパイル
サービス
Linuxが起動するときに自動的に起動するプログラムのこと
Apache
Webサーバとして動作するサービスSamba
Linuxで、Windowsのファイルサーバやプリントサービス、ドメインコントローラ機能、ドメイン参加機能を提供するサービスBIND
DNS(Domain Name Service)サーバの機能を提供するサービスライブラリ
よく使われるプログラムの共通部分を、他のプログラムから利用できるようにしたものです
OpenSSL
インターネット上で標準的に利用される暗号通信プロトコルであるSSLおよびTLSの機能を実装した、オープンソースのライブラリNSS(Network Security Services)
セキュア通信を用いるソフトウェアの開発のためのクロスプラットフォームライブラリ