sans_souciの日記

無憂茶房

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 の メールを操作

事前に参照設定を読み込んでおく必要あり、次の二つ。

お借りしたソース:

胴元/参考

''' >>> 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 "{}"

編集中/ 無理に似非一行にしないほうが良いかも・・