username = 'hoge-user'
hostname = '192.168.0.1'
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
msg = 'Enter password for user '
strconcat msg username
msg = hostname
strconcat msg ':22 /ssh /keyfile=C:\id_rsa /auth=publickey /user='
strconcat msg username
strconcat msg ' /passwd=hoge'
connect msg
wait '[hoge-user@hoge ~]$'
sendln 'su -'
wait 'パスワード:'
sendln 'hogehoge'
2014年10月16日木曜日
2011年11月11日金曜日
ログから特定IPをiptablesで拒否るスクリプト
毎日毎日、某国から大量にSFTPサーバに色んな名前でアクセスしてくる。
公開鍵認証を使っているから、大丈夫なんだろうけどちょっとログ見ていると
腹立たしいので、ログから指定回数のアクセス失敗したIPはiptablesで
拒否する設定をするようにシェルスクリプト書いてみた。
うまくいくかは今日から運用で見てみようかと。
一応、1時間おきに登録したIPを開放してみるスクリプトも書いてみたので
それはまた後日。
------------------
#!/bin/sh
LOG_PATH="/var/log/messages"
Limit="10"
#Checking Rhost which used unknown user.
LIST=`grep "Invalid user" $LOG_PATH|awk -F "from " '{print $2}'|sort|uniq|grep -v '^$' `
for rhost in $LIST
do
COUNT=`grep "Invalid user" $LOG_PATH|grep -w "$rhost"|wc -l`
if test `grep -w "$rhost" chkAttackHost.log`
then
echo "Already Registered : "$rhost
else
if [ $COUNT -ge $Limit ]
then
echo "Attack Detected : "$COUNT " times ["$rhost"]"
echo $rhost >> chkAttackHost.log
`/sbin/iptables -I INPUT -s $rhost -j DROP`
fi
fi
done
公開鍵認証を使っているから、大丈夫なんだろうけどちょっとログ見ていると
腹立たしいので、ログから指定回数のアクセス失敗したIPはiptablesで
拒否する設定をするようにシェルスクリプト書いてみた。
うまくいくかは今日から運用で見てみようかと。
一応、1時間おきに登録したIPを開放してみるスクリプトも書いてみたので
それはまた後日。
------------------
#!/bin/sh
LOG_PATH="/var/log/messages"
Limit="10"
#Checking Rhost which used unknown user.
LIST=`grep "Invalid user" $LOG_PATH|awk -F "from " '{print $2}'|sort|uniq|grep -v '^$' `
for rhost in $LIST
do
COUNT=`grep "Invalid user" $LOG_PATH|grep -w "$rhost"|wc -l`
if test `grep -w "$rhost" chkAttackHost.log`
then
echo "Already Registered : "$rhost
else
if [ $COUNT -ge $Limit ]
then
echo "Attack Detected : "$COUNT " times ["$rhost"]"
echo $rhost >> chkAttackHost.log
`/sbin/iptables -I INPUT -s $rhost -j DROP`
fi
fi
done
2010年5月14日金曜日
NotesカレンダーをCSVに書き出す。
人のソースを参考に、自分で書いたものをネットに退避。
これを使ってなんかトラブってもサポートいたしかねる。
・タスクが書き出されてしまう点
・会議しか書き出されない点
という問題があるのはいづれ直す。
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim col As NotesDocumentCollection
Dim outputFile As Integer
Dim startDate As NotesDateTime, endDate As NotesDateTime
Sub Initialize
Dim session As New NotesSession
Set db = session.CurrentDatabase
Dim dateTime As New NotesDateTime(Today)
input@ = Cint(Inputbox$("何日前に作成されたスケジュールを取り込みますか?", , 1))
Msgbox Today-input@ & "以降に作成・変更した予定を書き出します。"
Set dateTime = New NotesDateTime( Today-input@)
Set col = db.Search("@IsAvailable(CalendarDateTime)",dateTime, 0)
counter=0
outputFile = Freefile()
Open "C:\NotesCal.csv" For Output As outputFile
Print #outputFile, |"| & "Subject" & |","| & "Start Date" & |","| & _
"Start Time" & |","| & "End Date" & |","| & "End Time" & |","| & _
"All day event" & |","| & "Description" & |"|
Set doc = col.GetFirstDocument
While Not (doc Is Nothing)
counter=counter+1
Set startDate = New NotesDateTime(doc.StartDateTime(0))
Set endDate = New NotesDateTime(doc.EndDateTime(0))
Print #outputFile, |"| & doc.Subject(0) & |","| & _
startDate.DateOnly & |","| & startDate.TimeOnly & |","| & _
endDate.DateOnly & |","| & endDate.TimeOnly & _
|","| & "false" & |",""|
Set doc = col.GetNextDocument(doc)
Wend
Msgbox counter & "個の予定を書き出しました。"
Close outputFile
End Sub
これを使ってなんかトラブってもサポートいたしかねる。
・タスクが書き出されてしまう点
・会議しか書き出されない点
という問題があるのはいづれ直す。
Dim db As NotesDatabase
Dim doc As NotesDocument
Dim col As NotesDocumentCollection
Dim outputFile As Integer
Dim startDate As NotesDateTime, endDate As NotesDateTime
Sub Initialize
Dim session As New NotesSession
Set db = session.CurrentDatabase
Dim dateTime As New NotesDateTime(Today)
input@ = Cint(Inputbox$("何日前に作成されたスケジュールを取り込みますか?", , 1))
Msgbox Today-input@ & "以降に作成・変更した予定を書き出します。"
Set dateTime = New NotesDateTime( Today-input@)
Set col = db.Search("@IsAvailable(CalendarDateTime)",dateTime, 0)
counter=0
outputFile = Freefile()
Open "C:\NotesCal.csv" For Output As outputFile
Print #outputFile, |"| & "Subject" & |","| & "Start Date" & |","| & _
"Start Time" & |","| & "End Date" & |","| & "End Time" & |","| & _
"All day event" & |","| & "Description" & |"|
Set doc = col.GetFirstDocument
While Not (doc Is Nothing)
counter=counter+1
Set startDate = New NotesDateTime(doc.StartDateTime(0))
Set endDate = New NotesDateTime(doc.EndDateTime(0))
Print #outputFile, |"| & doc.Subject(0) & |","| & _
startDate.DateOnly & |","| & startDate.TimeOnly & |","| & _
endDate.DateOnly & |","| & endDate.TimeOnly & _
|","| & "false" & |",""|
Set doc = col.GetNextDocument(doc)
Wend
Msgbox counter & "個の予定を書き出しました。"
Close outputFile
End Sub
2010年5月13日木曜日
VBSからDOSコマンド実行
以下で実現可能。
Set objShell = CreateObject("WScript.Shell")
objShell.Run "cmd /c 実行したいコマンド",0,false
引数の0はプロンプトを表示するかどうか、falseコマンド終了待ちをするかどうか。
Set objShell = CreateObject("WScript.Shell")
objShell.Run "cmd /c 実行したいコマンド",0,false
引数の0はプロンプトを表示するかどうか、falseコマンド終了待ちをするかどうか。
登録:
投稿 (Atom)