vba/excel 正規表現の使用
VBA/Excel で正規表現を利用する
参考資料
MSDNのサイト:
サンプルサイト:
事前準備/VBE側
参照設定は次の項目にチェックを入れておくこと:
作ったの(ソース)
標準モジュールに作成。
パターンに合致した場合と、合致しなかった場合で処理を分ける必要あるけど眠いのでいったんここまで(要確認)
この後どうしよう
Set mymatches = myre.Execute(mystring)
ソース
Function gethostname(xyz As String) '-------------------------- xtmp = "" Set myre = New RegExp With myre .Pattern = "^Logwatch for (.+) \(Linux\)$" .IgnoreCase = True End With mystring = xyz Set mymatches = myre.Execute(mystring) ' Cells(10, 12) = mystring xtmp = mymatches(0).SubMatches(0) '--- ' Cells(10, 11) = xtmp '--- Set myre = Nothing gethostname = xtmp End Function
excel/vba から outlook にアクセスする方法(GetDefaultFolder(6) 無しで)
VBA/Excel から Outlook のメールボックスに保存されているメールを取得する方法(GetDefaultFolder(6) 無しで)
絶賛準備中
書き込みできてない点は次のとおり:
- メールをテキストに書き出す操作
- 特定のディレクトリにアクセスする操作
以下 内訳
Private Sub CommandButton1_Click() Set objoutlook = New Outlook.Application Set myNameSpace = objoutlook.GetNamespace("MAPI") p = 11 r = 13 For Each i In myNameSpace.Folders For Each j In i.Folders If j = "DIRECT" Then Cells(11, 1) = j Cells(11, 2) = j.Items.Count For Each k In j.Items Cells(r, 1) = k.Subject Cells(r, 2) = k.SenderName Cells(r, 3) = k.SenderEmailAddress Cells(r, 4) = Replace(k.Body, vbCrLf, "<br>") r = r + 1 Next End If Next ' For k = 1 To i.Folders.Count ' ' Cells(10 + k, 1) = i.Folders(k) ' result = i.Folders(k) ' If result = "DIRECT" Then ' Cells(11, 1) = result ' ' Cells(12, 1) = i.Folders.Count ' Else ' Cells(10 + k, 1) = result ' End If Next End Sub
時間ががが・・ もどってきたらもう一度編集
postgresql 9.6 from source on centos 7.x
ソースからPostgresql 9.6 を CentOS 7.x にインストールした後に実施する操作
サービスとして取り扱えるように次のように設定する。
保存先ディレクトリ: * /etc/systemd/system
ファイル名: * postgresql.service
[Unit] Description=PostgreSQL database server Documentation=man:postgres(1) After=network.target [Service] #Type=notify #Type=simple Type=forking User=postgres Group=postgres ExecStart=/usr/local/pgsql/bin/pg_ctl start -D /usr/local/pgsql/data -s -w ExecStop=/usr/local/pgsql/bin/pg_ctl stop -D /usr/local/pgsql/data -s -m fast ExecReload=/usr/local/pgsql/bin/pg_ctl reload -D /usr/local/pgsql/data -s TimeoutSec=0 [Install] WantedBy=multi-user.target
上記のファイルをディレクトリに配備した後に、次の操作を実施する。
# systemctl daemon-reload
・・・課題 ログファイルの配備場所と、PIDに関する設定が必要だったような?
excel/vba で outlook の メールを操作
事前に参照設定を読み込んでおく必要あり、次の二つ。
お借りしたソース:
- URL: https://www.fastclassinfo.com/entry/vba_outlook_receivedmail_analysis
- URL: http://officevba.info/
- URL: http://officevba.info/journal-attachments/
胴元/参考
''' >>> ActiveX のボタンを経由して操作する Private Sub CommandButton1_Click() ''' Dim InboxFolder, subfolder, i, n, k, attno As Long Dim sender, mes, path1 As String Dim outlookObj As Outlook.Application Dim myNameSpace, objmailItem As Object Dim fso As FileSystemObject ''' >>> outlook に関する 編集を設定 Set outlookObj = CreateObject("Outlook.Application") Set myNameSpace = outlookObj.GetNamespace("MAPI") Set InboxFolder = myNameSpace.GetDefaultFolder(6) Set subfolder = InboxFolder.Folders("out01") Set finfolder = subfolder.Folders("fin") n = 11 ''' >>> 保存先のディレクトリを設定 mes = InputBox("メールの添付資料を保管用フォルダを新しく作成します。フォルダ名を入力してください") path1 = ThisWorkbook.Path & "\" & mes Set fso = CreateObject("Scripting.FileSystemObject") fso.CreateFolder (path1) ''' >>> 解析する受信メールの範囲を毛低 ''' >>> MsgBox subfolder.Items.Count For i = subfolder.Items.Count To 1 Step -1 Set objmailItem = subfolder.Items(i) '''--- 受信メールの件数、受信日時、件名(タイトル)、送信者名、送信元のメールアドレス、内容(本文)を取得 ' 他の要素は要調査 ''' Range("A" & n).Value = i Range("A" & n).Value = n - 10 Range("B" & n).Value = objmailItem.ReceivedTime Range("C" & n).Value = objmailItem.Subject Range("D" & n).Value = objmailItem.SenderName Range("E" & n).Value = objmailItem.SenderEmailAddress ''' Range("F" & n).Value = Left(objmailItem.Body, 100) Range("F" & n).Value = " " & objmailItem.Body '''--- メールの添付ファイルを保管する attno = objmailItem.Attachments.Count If attno > 0 Then For k = 1 To attno objmailItem.Attachments(k).SaveAsFile (path1 & "\" & objmailItem.Attachments(k).DisplayName) Next Range("G" & n).Value = k Else Range("G" & n).Value = "なし" End If ' objmailItem.Copy objmailItem.Move finfolder n = n + 1 Next '''--- セットした変数を解除 Set outlookObj = Nothing Set myNameSpace = Nothing Set InboxFolder = Nothing Set finfolder = Nothing End Sub
予定: 本文をテキストとして生成する操作方法を確認する。
sample/パスワード生成/powershell
パスワード生成
sample
add-type -AssemblyName System.Web $mysmall=0 $mybig=0 $mysign = 0 $mynumber = 0 $myother = 0 #$myarray = "abcABC!@#$%^&*()_-+=[{]};:<>|./?" -split "" #$myarray = "abcABC%" -split "" $xresult = ([System.Web.Security.Membership]::GeneratePassword(8,1)) $myarray = $xresult -split "" foreach ( $myindex in $myarray){ # echo $myindex if($myindex -cmatch "[a-z]" ){ # a-z $mysmall += 1 }elseif($myindex -cmatch "[A-Z]"){ # A-Z $mybig += 1 }elseif($myindex -cmatch "[\!@#\$%\^\&\*\(\)_\-\+\=\[\{\]\}\;\:\<\>\|\.\/\?]" ){ # SIGN $mysign += 1 }elseif($myindex -cmatch "[0-9]"){ $mynumber +=1 }else{ echo "xxxmyindex : $myindex" $myother += 1 } } echo "small: $mysmall" echo "big: $mybig" echo "sign: $mysign" echo "number: $mynumber" echo "other: $myother" if($mysmall -ge 1 -and $mybig -ge 1 -and $mysign -ge 1 -and $mynumber -ge 1){ echo "OK" }else{ echo "FALSE" } echo $xresult
- 課題/記号、メタ文字の判定
- GeneratePassword の根っこ
sample source bash/chpasswd
chpasswd/bash
サンプル/仕掛中
素/ myfinish.txt
192.168.0.81,beforepwd01,afterpwd01 192.168.0.82,beforepwd02,afterpwd02
実行
cat myfinish.txt | awk -F',' \ '{printf \ "echo \x22$(date +%%FT%%T) The password of %s is being changed...\x22 ; \ sshpass -p \x27%s\x27 ssh -o StrictHostKeyChecking=no root@%s \ \047echo \x22root:%s\x22 \\\x7c chpasswd\047 ; \ echo \x22$(date +%%FT%%T) The password of %s is changed.\x22\n" \ ,$1,$2,$1,$3,$1 \ }' | tee result.txt
最後
cat result.txt | xargs -i bash -c "{}"
編集中/ 無理に似非一行にしないほうが良いかも・・