Rubyファイル操作

bash_historyの重複削除

ApacheのCGIでRubyを呼び出す。

Apacheの設定

sudo find / -name 000-default.conf
で検索かけると2箇所ある。

/etc/apache2/sites-enabled/000-default.conf
/etc/apache2/sites-available/000-default.conf

設定を読み込まれているのは、enabledで、availableの
設定ファイルへシンボリックしている。

mods-enabledの中でシンボリックしているのは、
cgid.conf
cgid.load
だけ。

mods-availableの中にcgi関連は、
authnz_fcgi.load
cgi.load
cgid.conf
cgid.load
proxy_fcgi.load
proxy_scgi.load
だけ。

sites-availableを以下のように変更。
<Directory /home/okamura/www/>
Require all granted
AllowOverride All
Options +ExecCGI
AddHandler cgi-script .rb
</Directory>

CGI側(Ruby)

rubyのファイルに以下のように記述し、
chmod +x で実行権限をつければOK。

エラーの場合、
改行コードが違っていてハマッた。Winで作ってLinuxに転送の場合注意。

GETを受取たい場合

送信側(Form)

CGI(Ruby)

Ubuntuでの自動起動について

サービスの自動起動について(スタートアップ)

sysv-rc-conf

インストール
sudo apt-get install sysv-rc-conf

グラフィカルな設定
sudo sysv-rc-conf

自動起動できているか。
sudo sysv-rc-conf -list | grep xxx

サービスを自動起動へ設定
sudo sysv-rc-conf xxx on

自動起動オフ
sudo sysv-rc-conf xxx off

起動スクリプトの場所(sysvinit)

/etc/init.d/
の中がスクリプト実体。

/etc/の中に
rc.local (ホスト固有の設定)
rc0.d
rc1.d
rc2.d
rc3.d
rc4.d
rc5.d
rc6.d
rcS.d
があり、ここにシンボリックを置いておく。

これらの0~6はOSが起動しているrunlevelの時に
対応していて、そのフォルダのスクリプトが読まれる。

SoftEtherをUbuntuとWinにインストール

SoftEtherを使うとき、自動で立ち上げるのに、
/etc/rc.local
の中に
/home/okamura/vpnserver/vpnserver start
と書いてしまった。

ランレベル

0:システム停止
1:シングルユーザモード
2:ローカルマルチユーザモード(NFSなどはなし)
3:フルマルチユーザモード(テキストコンソール)
4:未使用
5:フルマルチユーザモード(グラフィカル環境)
6:システム再起動

init.d 起動と service 起動の違い
/etc/init.d/xxxx start
は環境変数が引き継がれる。
service xxxx start
はPATH,TERM,LANGが引き継がれる。

SoftEther Ubuntu/Win インストール

Windows(サーバー)

公式サイトのSoftEther VPNのダウンロードから、
・ダウンロードするソフトウェア:SoftEther VPN(Freeware)
・コンポーネントを選択:SoftEther VPN Server
・プラットフォームを選択:Windows
・CPUを選択:Intel(x86 and x64)
・SoftEther VPN Server and VPN Bridge (Ver xxx, Build xxx, rtm)
をダウンロード、インストール。

・最初の選択画面でSoftEther VPN Serverを選択。
(管理ツールも一緒インストールされる)

・管理者パスワードを設定する。
(ユーザーのパスワードとは別なので注意)

・リモートアクセス VPN サーバーを選択する。

・仮想HUB名を設定する。(VPNから特に変更の必要なし)

・ユーザーを作成する。

途中からダイナミックDNSを有効にする場合、
サーバー管理マネージャ>接続>Config編集>
DDnsClient>bool Disabled
をfalseにする。

Windows(クライアント)

公式サイトのSoftEther VPNのダウンロードから、
・ダウンロードするソフトウェア:SoftEther VPN(Freeware)
・コンポーネントを選択:SoftEther VPN Client
・プラットフォームを選択:Windows
・CPUを選択:Intel(x86 and x64)
・SoftEther VPN Client (Ver xxx, Build xxx, rtm)
をダウンロード、インストール。

・最初の選択画面でSoftEther VPN Clientを選択。
(管理ツールも一緒インストールされる)

1.新しい接続設定の作成
を実行し仮想LANカードを作成する。

2.仮想LANカードにIPを設定する。
現在利用しているのとは別ネットワークで、設定はIPアドレスとサブネットマスクだけでOK。例えば現在のネットワークが192.168.1.xだったら、仮想LANカードには192.168.2.xというように。

3.新しい接続設定の作成
を実行する。

・接続設定名:
適当に入力する。

ホスト名:
サーバーがあるLANのグローバルIP/サーバーのローカルIPというように記入する。

・ポート、ユーザー名、パスワード:
サーバーで設定した値を入力する。

・高度な通信設定:
コネクションを8本に変更する。
半二重モードを使用するにチェックする。
VPN Serverとの間の通信をSSLで暗号化するにチェックする。
再接続間隔:60秒

・サーバー証明書を必ず検証する:
をチェックする。

初回のみ、
固有証明書の登録をクリック>ファイルから証明書を読み込む
にて登録。
(ファイル実体は削除しても大丈夫)

証明書の書き出しは
サーバー管理マネージャ>接続>暗号化と通信関係の設定>エクスポート
PKCS#12にてエクスポート。

作成した接続設定の右クリックから、スタートアップ接続を指定する。

Ubuntu(サーバー)

ここではUbuntuにSambaを入れ共有フォルダにWindowsのクライアントからアクセスしてみる。

CPUを調べる
cat /proc/cpuinfo

bitを調べる
uname -a

ダウンロード
wget https://jp.softether-download.com/files/softether/v4.34-9745-rtm-2020.04.05-tree/Linux/SoftEther_VPN_Server/64bit_-_Intel_x64_or_AMD64/softether-vpnserver-v4.34-9745-rtm-2020.04.05-linux-x64-64bit.tar.gz

インストール
tar -zxvf softether-vpnserver-v …
cd vpnserver
make

エラーがでる場合、
sudo apt-get update
sudo apt-get install make
sudo apt-get install gcc
sudo apt-get install binutils
とするか、
sudo apt-get install build-essential
(yum groupinstall “Development Tools”)

あたりを実行。

パーミション

インストールフォルダにて
chmod 600 *

chmod 700 vpncmd
chmod 700 vpnserver

・サービス登録

インストールフォルダに
startup.sh※文末
を作成し以下を書き込み。

vim /etc/systemd/system/vpnserver.service
以下、書き込み。

起動
sudo systemctl daemon-reload
sudo systemctl start vpnserver

終了
sudo systemctl stop vpnserver

自動起動する場合
sudo systemctl enable vpnserver

管理者パスワード設定
インストールフォルダにて
./vpncmd
Select 1, 2 or 3: 1
Hostname of IP Address of Destination: localhost
Specify Virtual Hub Name: 空白
VPN Server>ServerPasswordSet
とりあえず123123abcのような簡単なパスワードにしておく。
VPN Server>exit

ポート開放
sudo ufw allow 5555/tcp
(firewall-cmd –add-port=5555/tcp –zone=public –permanent)

・Windowsのサーバー管理マネージャで作業。

起動画面にて、新しい接続設定を実行
・接続設定名:ConoHa(CentOS)
・ホスト名:IPアドレス
・ポート番号:5555
・管理パスワード:123123abc

接続すると初回接続時のみ簡易セットアップダイアログが開く。

・リモートアクセスVPNサーバー
をチェックし次へ

・仮想HUB名:VPN(そのまま)
と入力しOK。

・ダイナミックDNS機能
はそのまま変更なし。

・IPsec/L2TP/EtherIP/L2TPv3サーバー機能の設定
はチェック無し(そのまま)でOK。

・VPN Azureクラウド
VPN Azureを無効にする
をチェックしOK。

1.ユーザーを作成する
をクリックし、ユーザー名とパスワードを入力してOK。
3.ローカルブリッジの設定
ではブリッジの設定しない。
閉じる。

簡易セットアップダイアログここまで。
ここからサーバー管理マネージャの通常画面で作業。

・リスナーポートを5555以外削除

・暗号化と通信関係の設定>管理者パスワードの変更

・ローカルブリッジ設定

仮想HUBでVPNを選択する。
新しいtapデバイスとのブリッジ接続をチェックし、
vpnserver
と入力しローカルブリッジを追加を実行。

Windowsのクライアント接続マネージャで作業。

・新規仮想LANカードの作成

を実行。名前はそのままでOK。

Microsoft ネットワーク用クライアント
Microsoft ネットワーク用ファイルとプリンター共有
インターネットプロトコル4(TCP/IPv4)
のみ残し、IPアドレスを
192.168.13.2 / 255.255.255.0
としておく。

・接続設定の新規作成

接続名:ConoHa(CentOS)
ホスト名:IPアドレス
ポート番号:5555
仮想HUB名:VPN
使用するLANカード:作成したLANカード
ユーザー認証:サーバー管理マネージャで作成した値

その他の部分は、上記のWindows(クライアント)の部分を参考。

sambaのインストール

Sambaのインストール

ポート開放
sudo ufw allow from 192.168.12.2 to any app samba

これで、VPS上のsambaのフォルダにアクセスできる。

Ubuntu(サーバー) アップデート

サービス停止
sudo systemctl stop vpnserver

バックアップ
mv vpnserver vpnserver20230117

ダウンロード
wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.41-9782-beta/softether-vpnserver-v4.41-9782-beta-2022.11.17-linux-x64-64bit.tar.gz

インストール
tar -zxvf softether-vpnserver-v …
rm softether-vpnserver-v …
cd vpnserver
make

パーミッション
chmod 600 *
chmod 700 vpncmd
chmod 700 vpnserver

設定ファイルコピー
sudo cp /home/ubuntu/vpnserver20230117/vpn_server.config /home/ubuntu/vpnserver/
sudo cp /home/ubuntu/vpnserver20230117/startup.sh /home/ubuntu/vpnserver/

起動
sudo systemctl start vpnserver

startup.sh補足

・for 変数 in リスト
do 処理
done

・ip tuntap
tuntapデバイス一覧

・tuntap
仮想ネットワークデバイス。
ハードウェアではなくプログラムにデータを渡す。

・grep -q
標準出力しない

・$?
直前コマンドの結果
0:成功
1:失敗(1以外もある)

・ifconfig インタフェース IPアドレス
インタフェースにIPアドレスを割り当てる。

・ExecStartPost
ExecStartが正常終了した場合実行される。

UbuntuでのIPアドレス固定化

route -n
ゲートウェイチェック。

ifconfig
DHCPのアドレスとマスクを確認。

cat /etc/resolv.conf
DNSネームサーバ

nameserver 127.0.1.1
のように自PCになっている場合あり。

デフォルト設定だと NetworkManager が有効になっていて、
dnsmasq が DNS キャッシュサーバーとして動いている模様。

NetworkManager(ネットワーク切り替え補助)

/etc/network/interfaces
に以下を追記する。

auto wlan0
iface wlan0 inet static
address 192.168.102.15
netmask 255.255.255.0
gateway 192.168.102.1
dns-nameservers 192.168.102.1
wpa-ssid xxx
wpa-ap-scan 1
wpa-key-mgmt WPA-PSK
wpa-psk xxx

有線の場合等
auto eth1
iface eth1 inet static
address 192.168.102.100
netmask 255.255.255.0
gateway 192.168.102.1
dns-nameservers 192.168.102.1

loとはローカルループバック
autoとは自動接続

再度読み込む場合(上手く行かないことが多い)
sudo service networking restart
sudo service network-manager restart

PHP IPアドレス確認用POST

クライアント

あるいは、

Winならタスクスケジュール、ubuntuならCRONに設定しておくと、
定期的にWan側のIPがレンサバに表示できるので、そのWan側のIPを使って、
SoftEtherをダイナミックDNSではなく、IP直打ちもできる。
xxx.xxx.xxx.xxx/192.168.xxx.xxxのような感じで入力する。

post.php

s.css

Gitメモ

最初に

リポジトリはリモートとローカルがある。通常、ローカルでの作業。
ローカルで変更を保存するのがインデックス→コミット。
リモートへはプッシュ、プル。

名称のorigin, masterというのは
origin = レポジトリの別名
master = ブランチの名前
でデフォルトの名称。

git clone https://xxx
で共有リポジトリとの変更履歴も含めたファイルが保存される。

git * , git add xxx で索引に登録
git commit -m “コメント” でコミットする。(この段階では共有リポジトリには保存されていない。)

共有リポジトリにプッシュ
git push 共有リポジトリ名 ブランチ名

共有リポジトリが登録されていない場合、
git remote add origin xxxで登録できる。

現在のローカルと、共有リポジトリに差が生まれる(共有は他からpushされる)
ローカルを最新にするのがgit pull

簡単な使い方

git clone https://github.com/okamurax/vba_to_sqlserver.git
cd vba_to_sqlserver
git add .
git commit -m “first commit”
git push https://github.com/okamurax/vba_to_sqlserver.git master

基本的なコマンド

sudo apt-get install git
インストール

git config –global user.name “okamura”
git config –global user.email “mail@xxx.com”
基本設定

git config –global color.ui true
カラー表示

git config –global alias.co checkout
別名

git config -l
コンフィグ一覧

git init
現在のディレクトリを使う宣言

.git等が作成される。
この.gitと同階層以下が作業ディレクトになる印で、.gitを手動でコピーすることもできる。

git add index.rb
git add . (サブディレクトリ以下を全てaddする)
ステージングへ

git commit
git commit -m “xxx”
ステージから共有リポジトリ

git show xxx(id)
コミットの内容がみれる。

git log
コミットのログを確認できる。(リポジトリのディレクトの中にいないとダメ)

git log –oneline
一行で表示したい

git log –stat
変更ファイルされたファイル

git log -p
変更箇所を表示する

git status
ファイルの状態。

modifiedと表示されると変更されていて、
changes not staged for commit ステージングにもコミットにいないという意味。
changes to be commited とステージングにいてコミットされていない状態。

git checkout — index.rb
コミットしていないファイルを、コミットした情報に戻す。

git diff
ステージングエリアに上がっていないものを比較できる
(ローカルとステージの差分)

git diff –cached
ステージングに上がったあとは –cached
(ステージとコミットの差分)

git rm index.html
で消す

git mv index.html
で移動

vim .gitignore
で対象外を管理できる。
*.log等を書いておくと、対象外とする。
.gitignoreを置いた階層と、以下サブディレクトに有効になる。

git commit –amend
直前のコミットを変更。履歴が増えない。
コミットするファイルは通常通り、addしてcommitする
そのときに、オプションで–amendを付ける
そうすると、直前のコミットのコメントを変更できる。

git reset –hard HEAD
直前のコミットに戻す場合。

git reset –hard HEAD^
直前のコミットの一つ前に戻る

git reset –hard xxxxxxxxxxxxxx
でも戻れる。

git reset –hard ORIG_HEAD
最新の状態から以前のコミットに一度戻して、
やっぱり最新の状態で良かった場合。

git branch
ブランチの一覧取得

git branch hoge
ブランチ作る

git checkout hoge
現在のブランチへ移動する。
ファイルの変更、追加などブランチごとの状態が維持される。

git checkout -b hoge
新しいブランチを作成しつつそのブランチ移動。

git merge hoge
ブランチの変更を取り込む。
hogeでの変更がよかったので、現在のブランチに取り込む。
コミット履歴も結合される。

git branch -d hoge
ブランチ消す

git tag
タグの一覧

git tag xxx
これで直近のコミットにxxxというタグがつく。

git tag yyy xxxx
これでxxxというidのコミットにyyyというタグがつく。

git tag -d xxx
タグを消す。

共有リポジトリもローカルと同じで、
***.git のようなディレクトリを作成するし、そのディレクトの中で、
git init –bare
を実施する。
bareオプションを付けると、
そのディレクトリではファイルの作成、変更等しないという意味。

git remote add origin xxx.git
(共有リポジトリの場所)

別のリポジトリを登録
作業ディレクトにしたい場所で実行する。
そのディレクトリではまずgit initされていないとダメ。
(cloneは大丈夫なので注意)

URLに”origin”という短縮名(ニックネーム)を付けると考えればOK。

空のディレクトリでgit initして、remote addしても特にファイルはコピーされない。
(cloneはコピーされる)

git initしただけのディレクトはブランチがない。
最初のコミットでブランチができる。

git remote rm origin
登録した共有リポジトリを削除

git push ox master
作業ディレクトリの内容を共有リポジトリへ登録。
oxという共有リポジトリに向かってmasterブランチを登録する。

push:アップロード
ox:リモートのサーバ名の短縮名(直接URLでもOK)
master:ブランチ名

masterの部分は正確にはmaster:masterとなる。
(ローカルのmasterをリモートのmasterに反映)

git clone xxx.git
共有リポジトリからコピー

git pull origin master
共有から持って来てローカルでマージされる。
マージなので、共有リポジトリとローカルでの変更箇所が一緒だと、コンフリクトする。

リモートrepの作り方。ローカルの場合。

Ubuntu側でSambaで共有しているフォルダで
git init –bare –shared
をする。

–sharedしてもダメでSambaのフォルダなので、
sudo chown -R nobody:nogroup フォルダ名
を実行する。

既にリモートrepにファイルがある場合、
チームエクスプローラ > 接続管理 > 複製
から、リモートrepの場所とローカルrepの場所を指定。

リモートrepもローカルrepも1箇所で複数のソリューションを管理できる。

ローカルで使う場合(Win)

適当なフォルダ(git_remote)で
git init –bare –shared

適当なフォルダで作業

 

Robocopy メモ

コピーもとコピー先は基本的にフォルダを指定する。以下の例だとsrcの中身がdstの中に入る。

・オプション

MIR
ミラーリング

R
リトライ

W
失敗時の待機時間

NP
完了率を表示しない

FFT
FAT時間での比較

B
バックアップモード

※アクセス権がない対象もバックアップできるが、実行時に管理者権限が必要になってしまう。

XA:SH
ファイル除外指定(SHはシステム属性、隠し属性)

XJ
シンボリックリンクを除外

NDL
ログファイルにファイル名のみ出力

PHP 工程管理テストアプリ

table.php

style.css

save.php

index.php

edit_condition.php

edit.php

class.php

add_task.php

PHP Todoテストアプリ

server.php

post.php

index.php

functions.php

config.php

commands.sql

_ajax_update_task.php

_ajax_sort_task.php

_ajax_delete_task.php

_ajax_check_task.php

_ajax_add_task.php