tips   AtCoder Python

#python #linux #cisco 

Python






Linux

状態チェック

## アップデート
# RedHat系(RPM)
 sudo dnf check-update
 sudo dnf upgrade -y [個別RPMパッケージ]

# Debian系(deb)
 sudo apt update
 apt list --upgradable
 sudo apt upgrade -y [個別debパッケージ]


## ディストリビューションのバージョン
# RedHat系 Debian系 共通
 cat /etc/os-release

# Debian系
 cat /etc/lsb-release

## ホスト名確認
hostnamectl
hostname

## OS情報 # 共通
uname -a  # OS, PC名, kernel, -v情報全て
uname -r  # kernelバージョン確認


## 時刻
timedatectl  # タイムゾーン・時刻設定の確認
LANG=C date  # 現在時刻の確認

## ログインシェル初期設定
echo $SHELL

## パーミッション初期設定
umask  # デフォルトのパーミッション確認(RedHat系 0002)(Debian系 022)
umask -S  # シンボル形で確認


## ドライブの空き容量確認
df -h --total  # デフォはバイト表示 -h(1024B単位でG,M,K表示) --total最後に合計が表示される

## ディレクトリの使用量の確認
du -sh ~/Onedrive(例)  # 親ディレクトリにまとめて表示し、まとまった使用量で表示(この場合、--totalは意味ないから割愛)
du -h --total ~/snap(例)  # 子ディレクトリを表示し、それぞれの使用量も全て表示 ▲とんでもなく長くなる時あるから注意!

## メモリ使用量の確認

free  # KB表示

## フォルダツリー表示
tree ~/snap

# システムの負荷状況を確認
vmstat -SM  # Virtual Memory  # -SM はMB表示

ディレクトリ・ファイル操作1

ディレクトリ・ファイル作成
ls -1h
mkdir -p training/dir  #デフォ 775 (directory)
touch training/file  #デフォ 664 (file)
ls -lh training
rm training/file  # 一旦消して・・
dd if=/dev/zero of=training/file bs=500KB count=2  # 1MBサイズのfileを作成  #デフォ 644(file)
ls -lh training


ディレクトリ移動
cd training


パーミッション編集
chmod 777 dir file  # ディレクトリ権限とファイル権限を777に変更
ls -lh

chmod go-w dir  # ディレクトリ権限を755に変更
ls -lh

chmod a-wx file  # ファイル権限を444に変更
chmod u+wx file  # ファイル権限を744に変更
ls -lh

変数

echo '#!/bin/bash' > file  # ファイルにプログラムを書き込み
echo 'echo "My name is $name."' | tee file  # 追記 ${name}も可
cat file
./file  # プログラム実行(u=rwxであること)


シェル変数
name=masa  # シェル変数の定義
echo $name
set | grep masa

export name  # 環境変数に設定
printenv | grep masa
export -p | grep masa


export -n name  # 環境変数からnameを削除
./file  # masaが表示されなくなったことを確認
export -p | grep masa

unset name  # シェル変数からnameを削除
echo $name  # 消えたことを確認
set | grep masa


環境変数の全体確認
printenv | tr ':' '\n'  # : を改行に変換して整形表示

通っているパスを確認
echo $PATH | tr ':' '\n' | sort (| grep ***)  # sort追加で重複も視認
cat ~/.bashrc | more -10  # 大元のファイルはコレ

ディレクトリ・ファイル操作2

cp file dir/copiedfile
ls -lh dir
./dir/copiedfile  # 実行

# 圧縮ファイルを作っておく
tar -zcvf dir.tar.gz dir  # tar.gz形式でdirを圧縮(デフォルトで再帰的)
zip -r dir.zip dir  # zip形式でdirを再帰的に圧縮

データ転送

AWSでEC2(RHEL9)を立ち上げる

## 別シェル(別PCでも可)
ssh -i keypair.pem ec2-user@RHEL_GIP  # AWSのRHEL9 EC2にログイン
su - masa  # masaにユーザ変更
mkdir receive  # SCPでファイルを受け取る為のディレクトリを作成

## 元シェル
find ~ -name 'keypair'
scp -i keypair.pem -r dir masa@RHEL_GIP:/home/masa/receive  # dirを圧縮せずに再帰的に転送
scp -i keypair.pem dir.tar.gz masa@RHEL_GIP:/home/masa/receive  # tar.gzを転送
scp -i keypair.pem dir.zip masa@RHEL_GIP:/home/masa/receive  # zipを転送

## 別シェル receiveディレクトリ内を確認
cd receive
ls -lh
 dir
 dir.tar.gz
 dir.zip

ls -lh dir  # -r dirで送ったディレクトリを確認
rm -r dir
tar -zxvf dir.tar.gz  # tarで送ったファイルを解凍
rm -r dir
unzip dir.zip  # zipで送ったファイルを解凍
 ※RHELにはunarコマンドは存在しないらしい・・・

rm d*  # 圧縮ファイルは消しておこう

receiveディレクトリは残しておこう

別シェルを落として、EC2は停止しておく

ネットワーク試験

## 応答用メッセージを作成
echo 'Connection test successful!' > response

## 簡易的に疑似サーバを建てて疎通試験
nc -l 8000 < response  # 8000番ポートでlisten(-l)状態に
nc dynabook 8000  # 別シェルから疑似サーバに接続試験
 > Connection test successful!

ディレクトリ・ファイル操作3

mv file dir/movedfile
ls -lh dir
ls -lh

rm dir/*file  # copiedfile, movedfile両方消す
rm -r dir*  # dirディレクトリ, dir.tar.gz, dir.zip すべて一気に消せる
cd  # ホームディレクトリに移動
rmdir training  # これできれいさっぱり

プロセス監視

uptime  # 稼働時間

プロセス実行終了(パフォーマンスモニタを見ながら)
yes > /dev/null &  # [1] バックグラウンド
top  # [2] uptimeと%CPUを確認 # 起動時刻,稼働時間,負荷平均,タスク,PID,CPU使用量率,メモリ使用量率
Ctrl+z  # [2]topを一時停止
ps

kill -9(-kill) *****  # yesのPID
 [1]-  Killed                  yes > /dev/null
ps

fg 2(%2)  # [2]topをフォアグラウンドに戻す
Ctrl+c  # [2]topを終了
ps

ネットワーク監視

(sudo dnf install net-tools)

curl inet-ip.info  # 自宅ルータのWAN側GIPアドレス
curl globalip.me  # 同じく自宅ルータのWAN側GIPだが、反応がちょっと遅い(なぜ?)

networkctl status  # 自PCのネットワーク情報
ifconfig  # NWインターフェース確認、設定
ip -4 a  # 各IFのIPv4アドレス確認(addr | address でも可)

route  # ルートテーブル情報
ss -pantsu  # ソケット情報

ping -c 4 8.8.4.4  # GoogleセカンダリDNSサーバにping4回
traceroute -n 8.8.4.4  # 名前解決せず高速に経路確認
tracepath -n 8.8.4.4  # pmtu

dig schneehoppli.com any  # A:NWアドレス NS:ネームサーバ MX:メールサーバ SOA:SOA情報 ANY:すべて
host -v schneehoppli.com  # 同上
nslookup schneehoppli.com  # GIPアドレス調査

curl -I https://www.schneehoppli.com  # レスポンスヘッダ
curl -v https://www.schneehoppli.com  # コンテンツ取得時の詳細ログ






Cisco

Linux端末からCisco機器にコンソール接続(minicom使用)

# シリアルポートの確認(USBにシリアルケーブルを挿した状態で)
ls /dev | grep ttyUSB
 ttyUSB0

# minicomをシリアルポート指定で起動(英語の方が表示が整う)
LANG=C minicom -D /dev/ttyUSB0

# minicomを終了するときは
Ctrl+A z x Enter
# show clock  # SYSクロックの確認
# show calendar  # HWクロックの確認(startup)