独り言ch

このブログでは、個人的な体験談や意見などを好き勝手書くサイト。

【備忘録】リダイレクトとコマンドプロンプトについて

リダイレクト:Windows/linux

#普通にechoで文字内容をテキストファイルに上書き

echo "test"> file.txt(echo "test"1> file.txt デフォルトで1に設定されている)

#テキストファイルに追加で文字列を挿入

echo "test">> file.txt

#標準エラーの内容をテキストファイルにリダイレクト

dir *.exe 2> ErorrFile.txt

#標準エラーの内容をテキストファイルに追記でリダイレクト

dir *.exe 2>> ErorrFile.txt

#標準出力と標準エラーを両方ともリダイレクト

コマンド > ファイル名 2>&1

#標準出力と標準エラーを両方とも追記でリダイレクト

コマンド >> ファイル名 2>&1

パイプについて

#コマンドの(|)の後ろにさらにコマンドを記入して標準出力の内容を変えることができる。
コマンド1 | コマンド2 | コマンド3 | コマンド4
 ※パイプは実行処理結果をパイプの横にあるコマンドでさらに実行処理を行う

[windows]

type filename.txt | more

[Liniux]

cat filename.txt | grep -i "aaaaa"

 

#結合について

[windows]
copy file1.txt + file2.txt + file3.txt file123.txt
[Linux]
cat file1.txt file2.txt file3.txt > file123.txt
 
#入力について
コマンド < ファイル名
※重要:「0」は標準入力であるSTDINハンドルを表しており、省略した場合は「0」
リダイレクトを使って入力ファイルをコマンドプロンプトに出力
例) 「C:\share>sort 0< test.txt」 
  「C:\share>sort < test.txt」
 
コマンド < 入力ファイル名 > 出力ファイル名
リダイレクトを使って、入力ファイル名をコマンドプロンプトでデータ加工出力
例)sort < data.txt > result.txt
data.txtをコマンドプロンプトで並び替えを行い、result.txtに出力。
cat signature.txt >> mail.txt
ls -l /etc > ls-etc.txt

豆知識:

標準出力と標準エラー出力にわけられる
※一見すると全部、標準エラーにみれるので注意
 
・typeコマンド
書き方:type [ファイル名]
結果:ファイルに記載されている内容を確認できる。
 
・ビットバケツ
/dev/null は、Unix系のオペレーティングシステムにおいて特別なファイルの一つで出力に不要な標準データと標準エラーデータを表示しないように設定できる。
    command > /dev/null
    ・コマンドの標準出力を消すことができる
    command 2> /dev/null
    ・標準エラーデータを表示しないように設定できる
    command > /dev/null 2>&1
    ・コマンドの標準出力とエラー出力両方とも消すことができる
 
[help コマンド] 
[コマンド /?]
でコマンドオプションを確認することができる。
 

【LINUX:備忘録】ウェブサーバーの設定編

備忘録
nginxでWEBサーバーを構築した後、コンフィグファイルを編集してファイルをブラウザーに表示する。

環境
OS:CentOS8.1
WEBサーバー:nginx

手順1:下記のディレクトリーにある「nginx.conf」のファイルを編集

[root@localhost ~]vi /etc/nginx/nginx.conf

手順2:serverの値を編集

server {
         listen       80 default_server;
         listen       [::]:80 default_server;

     # SSLを使用する場合は下記3行記入
         # listen  443 ssl;
         # ssl_certificate         /etc/pki/tls/certs/example.crt;
         # ssl_certificate_key     /etc/pki/tls/certs/example.key;

        #server_nameを今回は、localhostにする
         server_name  localhost;

        #rootディレクトリーを指定
         root     /usr/share/nginx;

手順3:locationの記載

  #Load configuration files for the default server block.

        include /etc/nginx/default.d/*.conf;
  

  #locationの後ろに、ファイルの置いてあるフォルダー名を「/」で囲んで記載 ※今回は/test/
         location /test/ {
      #フォルダーに格納されているファイルを記載、複数ある場合は、最初に記載されたファイルから優先順位が決まる
                 index   test.html;
        }

 

#aliasの書き方
#aliasの利点:「alias」に記載されたディレクトリーを参照して表示してくれる
#例えば下記の2つの「location」があった場合
#ウェブブラウザーに「https://localhost/test1/」「 https://localhost/test/」と記入した場合
#「/usr/share/nginx/cgi-bin/test1/」に格納されているファイルを表示できる。

        location /test1/ {
                alias   /usr/share/nginx/cgi-bin/test1/;
                index   index.html;
        }

        location /test/ {
                alias  /usr/share/nginx/cgi-bin/test1/;
                index   index.html;
        }

番外編:cgiのファイルをブラウザーに表示する場合

1.EPELレポジトリーをインストール
dnf -y install epel-release

2.fcgiwrapをインストールfcgiwrapfcgiwrap
dnf --enablerep=epel -y install fcgiwrap

3.ソケットの確認
systemctl list-units --type=socket | grep nginx.socket
or
systemctl list-units | grep nginx.socket

4.ソケット有効化
systemctl enable fcgiwrap@nginx.socket

5.ソケット開始
systemctl start fcgiwrap@nginx.socket

 

6.cgiファイル作成 ※今回はpython

touch /usr/share/nginx/******(任意)/******(任意).cgi

vi /usr/share/nginx/******(任意)/******(任意).cgi

 

#!/usr/bin/python3

import os

# カウントを保存するファイル
counter_file = '/usr/share/nginx/******(任意)/count.txt'

if not os.path.exists(counter_file):
    with open(counter_file, 'w') as f:
        f.write('0')

with open(counter_file, 'r') as f:
    count = int(f.read().strip())

count += 1

with open(counter_file, 'w') as f:
    f.write(str(count))

print("Content-type: text/html\n")
print("<html>\n<body>")
print("<div style=\"font-size: 40px;\">")
rint("CGI")
print(f"<h1>this page has been opened {count} </h1>")
print("</div>")
print("</body>\n</html>")


7.nginx.confの編集

location /******(任意)/ {
                index           ******(任意).cgi;
                include         fastcgi_params;
                fastcgi_pass    unix:/run/fcgiwrap/fcgiwrap-nginx.sock;
                fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        }

 

豆知識:

EPEL はFedora プロジェクトが提供するレポジトリーの使用を可能にする機能
RedHat が提供するレポジトリー以外も使用できるようになる。

 

 

【Linux:備忘録】nginxで自己署名証明書の発行

自己署名証明書の発行

WEBサーバーの通信を暗号化(SSL化)の試験をするために自己署名証明書を発行してSSL化を行ったので備忘録を残しておく。

環境
OS:CentOS8.1

自己署名証明書の発行手順

CentOS8以降には自己署名証明書を簡単に作成できる仕組みが用意されている。こちらの機能を利用して証明書の発行を行う

下記のコマンドでファイルを移動

cp /usr/share/doc/openssl/Makefile.certificate  /etc/pki/tls/certs/Makefile

下記のコマンドで証明書を作成

cd /etc/pki/tls/certs

make **********(任意).crt  ←サフィックスには「crt」

※下記のようなメッセージが表示されるのでパス以外は任意で回答

umask 77 ; \
/usr/bin/openssl genrsa -aes128 2048 > example.key
Generating RSA private key, 2048 bit long modulus (2 primes)
.......+++++
.................+++++
e is 65537 (0x010001)
Enter pass phrase:
Verifying - Enter pass phrase:
umask 77 ; \
/usr/bin/openssl req -utf8 -new -key example.key -x509 -days 365 -out example.crt 
Enter pass phrase for example.key:
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:
State or Province Name (full name) :
Locality Name (eg, city) [Default City]:
Organization Name (eg, company) [Default Company Ltd]:
Organizational Unit Name (eg, section)
:
Common Name (eg, your name or your server's hostname) []:

パスフレーズの削除

mv example.key example.key.org

openssl rsa -in example.key.org -out example.key

Enter pass phrase for example.key.org:*****

writting RSA key

コンフィグファイルの編集

vi /etc/nginx/nginx.conf

server{

       #下記3行追記

        listen  443 ssl;
        ssl_certificate         /etc/pki/tls/certs/example.crt;
        ssl_certificate_key     /etc/pki/tls/certs/example.key;

}

再起動後、設定を反映

~] reboot

~] systemctl restart nginx

※うまくいかない場合は,「systemctl status nginx」コマンド でエラーが出てないか確認

俺の有給が残りわずか

有給休暇

それは、社員が自由に休みたい日を打診して休むことができる制度。

業界によって違いがあるけれど一般的には、夏休みやゴールダンウィークで有給を消化することがほとんど。

これで有給消化率90%超え!などと言って福利厚生をアピールする企業が心底嫌いだ。

俺の今年、与えられた有給はたった6日…夏休みやGWを働いたことでどうにか保ってきた。

ここにきて、割と深刻な風邪になってしまい会社に行けなくなり、仕方なしに有給を使って休むことにした。

有給は、こういった非常事態のために用意された制度なのか、休みを増やすために生まれた制度なのか疑問に思ってしまう。

私の会社とかだと管理職とかになると有給を消化するだろか、使う機会がなく溢れてしまっている状態が蔓延化している。

有給を消化することが悪者のように扱う呪いがはびこっているように思う。

そう思うと有給が少ないのは、消化できており健全な状態なのかもしれない…ほんとか😱

残り、有給2日、俺の戦いは、しんどい。

【Linux : 備忘録】サイトのレスポンスヘッダ

サイトのレスポンスヘッダについての備忘録です

1. はじめに

レスポンスヘッダとは、
HTTPステータスラインに書ききれないレスポンスの情報」が書かれている場所
例えば、何時にWEBサーバーからレスポンスしたなど

↓こういった情報
------------------------------------------------
Server: nginx\r\n

Date: Tue, 11 Jul 2017 09:23:07 GMT\r\n
Content-Type: text/html\r\n
Transfer-Encoding: chunked\r\n
Connection: keep-alive\r\n
---------------------------------------------------
<!DOCTYPE html>
<html lang="ja">
<head>



</body>
</html>

2. レスポンスヘッダの抽出

下記のShellscriptを作成して実行今回は、example.com

#!/usr/bin/bash
 
Date_Value=$(wget --server-response --spider https://example.com 2>&1)
echo $Date_Value
echo "complete"
 
#どこかのテキストに保存する場合
if [ ! -f /***/***/****.txt ]; then
    touch /****/****/****.txt
fi
echo $Date_Value >> */*/***.text
 

#起動
[root@localhost~] bash ***.sh

3. 特定のレスポンスヘッダの抽出

#!/usr/bin/bash
 
#grep -i "****" を追記(-i はオプション省略可)
Date_Value=$(wget --server-response --spider https://example.com 2>&1 | grep -i "****" )
echo $Date_Value
echo "complete"

 

#起動
[root@localhost~] bash ***.sh

grepコマンド便利★

【Linux:備忘録】crontab 設定編

crontabで定期的なプログラムの作成をしたので備忘録を残しておきます。
まず実行するための曜日、日時を指定して、シェルスクリプトの保存されているフルパスを記載

※crontabは定期的にジョブを実行するようスケジュールするcronを設定するコマンド

参考記事:
crontabコマンドについてまとめました 【Linuxコマンド集】

注意:
crontab -e で編集画面にて 「例)*/30 * * * * ./home/test/work.sh」と記載する際は、アスタリスクの間に半角スペースがないとエラーになる。

Shellscriptの実行権限によっては、crontabが起動しないので注意

実行権限の変更
例)chmod 777 /home/test/work.sh 

1. 分: */30 は30分ごとを意味
2. 時: すべての時(*)を指定
3. 日: すべての日(*)を指定
4. 月: すべての月(*)を指定
5. 曜日: すべての曜日(*)を指定

 

#crontab の編集
crontab -e

#例)
*/30 * * * * ./home/test/work.sh

#crontab の確認
crontab -l

【LINUX:備忘録】アカウントの追加と変更、確認

記入日:2024年9月19日

この記事では、「USERの作成方法」と「作成できているか確認するための方法」、「root user」から変更する方法を残しておきます。

環境:CentOS8.1

※ユーザーの追加
adduser  <ユーザー名>

 

※ユーザーが追加されたか確認
cat /etc/passwd | grep "<ユーザー名>"

※こういうコマンドの使い方もあるみたい
cat /etc/passwd|sed -e 's/:.*//g'

 

※ユーザー切替を行い、切替後ユーザーの環境に切り替える
su - <ユーザー名>

 

※パスの設定
passwd