■telnet
sudo apt-get install telnetd
■ssh
sudo apt-get install openssh-server
2015年4月6日月曜日
第45回「gcviewerオプション」
■デフォルト値を確認
java -XX:+PrintFlagsFinal | grep Size
InitialHeapSize
MaxHeapSize
MaxPermSize
PermSize
■gcviewerオプション
java -XX:PermSize=128M -XX:MaxPermSize=128M -Xms256M -Xmx256M -Xloggc:/var/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps HelloWorld
java -XX:+PrintFlagsFinal | grep Size
InitialHeapSize
MaxHeapSize
MaxPermSize
PermSize
■gcviewerオプション
java -XX:PermSize=128M -XX:MaxPermSize=128M -Xms256M -Xmx256M -Xloggc:/var/tmp/gc.log -XX:+PrintGCDetails -XX:+PrintGCDateStamps HelloWorld
2015年4月5日日曜日
第44回「tcpdump→wiresharkで確認」
sudo tcpdump -n -nn -s0 -A -i eth0 host 対向IP and port 対向PORT -w test.cap
wireshark test.cap
Follow TCP Stream→確認したらClear
wireshark test.cap
Follow TCP Stream→確認したらClear
第43回「iptables(ファイアーウォール)の接続許容、受信拒否」
/etc/init.d/iptables stop
/etc/init.d/iptables status
cp -pi /etc/systemconfig/iptables iptables.bk
iptables-save > /etc/systemconfig/iptables
vi /etc/systemconfig/iptables
/etc/init.d/iptables start
/etc/init.d/iptables status
/etc/init.d/iptables status
cp -pi /etc/systemconfig/iptables iptables.bk
iptables-save > /etc/systemconfig/iptables
vi /etc/systemconfig/iptables
*filter-A INPUT -s 対向IP -p tcp --tcp-flags SYN,RST,ACK ACK --sport 対向PORT -j DROPCOMMIT/etc/init.d/iptables start
/etc/init.d/iptables status
第42回「JMXリモート(jconsole,virtualvm)、eclipseリモートデバッグ、teratermのSSH転送(sshポートフォワード、トンネリング)」
■JMXリモート(jconsole,virtualvm←java/bin配下にある)
hostname -iで127.0.0.1でないこと(/etc/hosts修正)
java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1234 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.xx.xx HelloWorld
■eclipseリモートデバッグ
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y HelloWorld
■teratermのSSH転送(sshポートフォワード、トンネリング)
設定→SSH転送→追加→ローカルのポート:10022、リモート側ホスト:192.168.xx.xx、ポート1234or8000→OK→OK→リモート側ホスト:192.168.xx.xxにTeraTermでSSH接続(port:22)する
jconsole,virtualvmを起動→リモートプロセスlocalhost:10022で接続
eclipseを起動→RunのDebug Confuurations→Remote Java Applicationで新規→ConnectタブでProject(ソース)を選択、Connection Type:Standard(Socket Attach)、Host:localhost、Port:10022→Debug
hostname -iで127.0.0.1でないこと(/etc/hosts修正)
java -Dcom.sun.management.jmxremote=true -Dcom.sun.management.jmxremote.port=1234 -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false -Djava.rmi.server.hostname=192.168.xx.xx HelloWorld
■eclipseリモートデバッグ
java -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000,suspend=y HelloWorld
■teratermのSSH転送(sshポートフォワード、トンネリング)
設定→SSH転送→追加→ローカルのポート:10022、リモート側ホスト:192.168.xx.xx、ポート1234or8000→OK→OK→リモート側ホスト:192.168.xx.xxにTeraTermでSSH接続(port:22)する
jconsole,virtualvmを起動→リモートプロセスlocalhost:10022で接続
eclipseを起動→RunのDebug Confuurations→Remote Java Applicationで新規→ConnectタブでProject(ソース)を選択、Connection Type:Standard(Socket Attach)、Host:localhost、Port:10022→Debug
2014年10月1日水曜日
2014年7月9日水曜日
第39回「excel関数 セル値のアドレスからセル値を参照する」
第39回「excel関数 セル値のアドレスからセル値を参照する」です。
F1セルは、
=INDIRECT(ADDRESS(MATCH(1,A:A,0)+3,COLUMN(A1)+3,))
A列の「1」を検索一致したセルから、列+3、行+3のセル値を表示する。
| A | B | C | D | E | F | |
| 1 | 1 | a | aa | aaa | ddd | |
| 2 | b | bb | bbb | |||
| 3 | c | cc | ccc | |||
| 4 | d | dd | ddd | |||
| 5 | 2 | e | ee | eee |
=INDIRECT(ADDRESS(MATCH(1,A:A,0)+3,COLUMN(A1)+3,))
A列の「1」を検索一致したセルから、列+3、行+3のセル値を表示する。
第38回「シェルの一部をリダイレクトする」
第38回「シェルの一部をリダイレクトする」です。
標準出力と標準エラー出力をまとめて、ファイルに出力し、元に戻す。
######
test.sh
######
exec 3>&1 >file 2>&1
command
…
exec 1>&3 2>&1
command
0,1,2,3はファイルディスクリプタを表している。
0,1,2は予約されている。
ファイルディスクリプタ0(標準入力)
ファイルディスクリプタ1(標準出力):画面出力
ファイルディスクリプタ2(標準エラー出力):画面出力
「2>&1」は、「2 の出力先を、1 の出力先と同じものに設定」を表す。
3>&1
ファイルディスクリプタ1(標準出力):画面出力
ファイルディスクリプタ2(標準エラー出力):画面出力
ファイルディスクリプタ3:画面出力★設定
>file
(1>fileと同意味)
ファイルディスクリプタ1(標準出力):file出力★設定
ファイルディスクリプタ2(標準エラー出力):画面出力
ファイルディスクリプタ3:画面出力
2>&1
ファイルディスクリプタ1(標準出力):file出力
ファイルディスクリプタ2(標準エラー出力):file出力★設定
ファイルディスクリプタ3:画面出力
1>&3
ファイルディスクリプタ1(標準出力):画面出力★設定
ファイルディスクリプタ2(標準エラー出力):file出力
ファイルディスクリプタ3:画面出力
2>&1
ファイルディスクリプタ1(標準出力):画面出力
ファイルディスクリプタ2(標準エラー出力):画面出力★設定
ファイルディスクリプタ3:画面出力
標準出力と標準エラー出力をまとめて、ファイルに出力し、元に戻す。
######
test.sh
######
exec 3>&1 >file 2>&1
command
…
exec 1>&3 2>&1
command
0,1,2,3はファイルディスクリプタを表している。
0,1,2は予約されている。
ファイルディスクリプタ0(標準入力)
ファイルディスクリプタ1(標準出力):画面出力
ファイルディスクリプタ2(標準エラー出力):画面出力
「2>&1」は、「2 の出力先を、1 の出力先と同じものに設定」を表す。
3>&1
ファイルディスクリプタ1(標準出力):画面出力
ファイルディスクリプタ2(標準エラー出力):画面出力
ファイルディスクリプタ3:画面出力★設定
>file
(1>fileと同意味)
ファイルディスクリプタ1(標準出力):file出力★設定
ファイルディスクリプタ2(標準エラー出力):画面出力
ファイルディスクリプタ3:画面出力
2>&1
ファイルディスクリプタ1(標準出力):file出力
ファイルディスクリプタ2(標準エラー出力):file出力★設定
ファイルディスクリプタ3:画面出力
1>&3
ファイルディスクリプタ1(標準出力):画面出力★設定
ファイルディスクリプタ2(標準エラー出力):file出力
ファイルディスクリプタ3:画面出力
ファイルディスクリプタ1(標準出力):画面出力
ファイルディスクリプタ2(標準エラー出力):画面出力★設定
ファイルディスクリプタ3:画面出力
2014年6月30日月曜日
第37回「vbaからexcelシート名を確認する」
第37回「vbaからexcelシート名を確認する」です。
Sub SheetChk()
Dim ws As Worksheet
For Each ws In Worksheets
'If ws.Name = "Sheet1" And ws.Visible Then MsgBox ws.Name, vbInformation
MsgBox ws.Name, vbInformation
Next ws
End Sub
Sub SheetChk()
Dim ws As Worksheet
For Each ws In Worksheets
'If ws.Name = "Sheet1" And ws.Visible Then MsgBox ws.Name, vbInformation
MsgBox ws.Name, vbInformation
Next ws
End Sub
2014年6月29日日曜日
第36回「batからvbsファイルの先頭に変数を追加する」
第36回「batからvbsファイルの先頭に変数を追加する」です。
バッチファイルからvbsファイルの先頭に変数を追加して複数ファイルを作成します。
#######
test.bat
#######
@echo off
setlocal enabledelayedexpansion
set i=1
for /f %%l in (test.txt) do (
echo Private Const TMP = "%%l"> dst_!i!.vbs
echo;>> dst_!i!.vbs
type test.vbs >> dst_!i!.vbs
set /a i=!i!+1
)
endlocal
バッチファイルからvbsファイルの先頭に変数を追加して複数ファイルを作成します。
#######
test.bat
#######
@echo off
setlocal enabledelayedexpansion
set i=1
for /f %%l in (test.txt) do (
echo Private Const TMP = "%%l"> dst_!i!.vbs
echo;>> dst_!i!.vbs
type test.vbs >> dst_!i!.vbs
set /a i=!i!+1
)
endlocal
第35回「vbsからvbaマクロを呼び出す」
第35回「vbsからvbaマクロを呼び出す」です。
EXCEL標準モジュールのマクロvbaをvbsから呼び出します。
#######
test.vbs
#######
Dim ExcelApp
Dim ExcelBook
Dim FilePath
FilePath = "C:\work\test.xls"
Set ExcelApp = CreateObject("Excel.Application")
Set ExcelBook = ExcelApp.Workbooks.Open(FilePath)
'ExcelApp.ActiveWorkbook.Worksheets("Sheet1").select
ExcelApp.Visible = True
ExcelApp.Run "test.xls!Macro1()"
'ExcelBook.Close True
'ExcelApp.quit
Set ExcelApp = Nothing
Set ExcelBook = Nothing
EXCEL標準モジュールのマクロvbaをvbsから呼び出します。
#######
test.vbs
#######
Dim ExcelApp
Dim ExcelBook
Dim FilePath
FilePath = "C:\work\test.xls"
Set ExcelApp = CreateObject("Excel.Application")
Set ExcelBook = ExcelApp.Workbooks.Open(FilePath)
'ExcelApp.ActiveWorkbook.Worksheets("Sheet1").select
ExcelApp.Visible = True
ExcelApp.Run "test.xls!Macro1()"
'ExcelBook.Close True
'ExcelApp.quit
Set ExcelApp = Nothing
Set ExcelBook = Nothing
2014年6月27日金曜日
第34回「vbsから開いているIEを操作する」
第34回「vbsから開いているIEを操作する」です。
既に開いているIEのウィンドウ、タブがGoogleだったら、閉じます。
#####
ie.vbs
#####
Option Explicit
Private FSO
Private Browser
Private ProgName
Private BrowsersArray(),c
Set FSO = CreateObject("Scripting.FileSystemObject")
c = 0
For Each Browser In CreateObject("Shell.Application").Windows
ProgName = FSO.GetFileName(Browser.FullName)
If LCase(ProgName) = "iexplore.exe" Then
ReDim Preserve BrowsersArray(c)
Set BrowsersArray(c) = Browser
c = c + 1
End If
Next
Set FSO = Nothing
If c > 0 Then
For Each Browser In BrowsersArray
'WScript.Echo Browser.LocationURL
'WScript.Echo Browser.LocationName
If Browser.LocationName = "Google" Then
Browser.Quit
End If
Next
End If
既に開いているIEのウィンドウ、タブがGoogleだったら、閉じます。
#####
ie.vbs
#####
Option Explicit
Private FSO
Private Browser
Private ProgName
Private BrowsersArray(),c
Set FSO = CreateObject("Scripting.FileSystemObject")
c = 0
For Each Browser In CreateObject("Shell.Application").Windows
ProgName = FSO.GetFileName(Browser.FullName)
If LCase(ProgName) = "iexplore.exe" Then
ReDim Preserve BrowsersArray(c)
Set BrowsersArray(c) = Browser
c = c + 1
End If
Next
Set FSO = Nothing
If c > 0 Then
For Each Browser In BrowsersArray
'WScript.Echo Browser.LocationURL
'WScript.Echo Browser.LocationName
If Browser.LocationName = "Google" Then
Browser.Quit
End If
Next
End If
2014年6月15日日曜日
第33回「コマンドプロンプトからgrepする」
第33回「コマンドプロンプトからgrepする」です。
grepの代わりにfindstrコマンドを使用します。
パイプを組み合わせて使うと便利です。
> dir | findstr .txt
2014/06/15 00:26 35 hoge.txt
grepの代わりにfindstrコマンドを使用します。
パイプを組み合わせて使うと便利です。
> dir | findstr .txt
2014/06/15 00:26 35 hoge.txt
第32回「WindowsバッチファイルからTailする」
第32回「WindowsバッチファイルからTailする」です。
findの行数が3フィールド目に表示されるので、for tokensで3フィールド目(%%C)でsetし、
引き算して、moreします。
######
tail.bat
######
@echo off
set LINE=2
set FILE=hoge.txt
for /F "tokens=1,2,3 USEBACKQ" %%A in (`find /V /C "" %FILE%`) do set FL=%%C
set /A TAIL=%FL%-%LINE%
more +%TAIL% %FILE%
pause
findの行数が3フィールド目に表示されるので、for tokensで3フィールド目(%%C)でsetし、
引き算して、moreします。
######
tail.bat
######
@echo off
set LINE=2
set FILE=hoge.txt
for /F "tokens=1,2,3 USEBACKQ" %%A in (`find /V /C "" %FILE%`) do set FL=%%C
set /A TAIL=%FL%-%LINE%
more +%TAIL% %FILE%
pause
第31回「Windowsバッチファイルから最新ファイルのみ表示する」
さて、第31回のお題は「Windowsバッチファイルから最新ファイルのみ表示する」です。
「dir /O-D /B パス」を指定。
/O-D 日時の新しい順に表示
/B ディレクトリ名とファイル名のみを表示
##################
newdayfile_echo.bat
##################
@echo off
set BATDIR=%~dp0
for /F "USEBACKQ" %%A in (`dir /O-D /B "" %BATDIR%`) do (
set FILE=%%A
goto break;
)
:break
echo %FILE%
pause
「dir /O-D /B パス」を指定。
/O-D 日時の新しい順に表示
/B ディレクトリ名とファイル名のみを表示
##################
newdayfile_echo.bat
##################
@echo off
set BATDIR=%~dp0
for /F "USEBACKQ" %%A in (`dir /O-D /B "" %BATDIR%`) do (
set FILE=%%A
goto break;
)
:break
echo %FILE%
pause
第30回「Excel関数でCase文させる」
さて、第30回のお題は「Excel関数でCase文させる」です。
=CHOOSE(1+SUM((A1={"一","二","三"})*{1,2,3}),"other","one","two","three")
A1が一なら、one
A1が二なら、two
A1が三なら、three
A1が一、二、三以外なら、other
になります。
=CHOOSE(1+SUM((A1={"一","二","三"})*{1,2,3}),"other","one","two","three")
A1が一なら、one
A1が二なら、two
A1が三なら、three
A1が一、二、三以外なら、other
になります。
2014年6月7日土曜日
第29回「Windowsバッチファイルからftpで自動取得させる」
さて、第29回のお題は「Windowsバッチファイルからftpで自動取得させる」です。
パスワードは手入力で、複数サイトで使いまわすようにします。
###########
autoftp.bat
###########
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set BATDIR=%~dp0
set USER=root
set /P IN_PASS=rootパスワード:
echo > %BATDIR%ftp.txt
echo > %BATDIR%ftp.log
set CRLF=^
set FTP1=!CRLF!^
open localhost!CRLF!^
%USER%!CRLF!^
%IN_PASS%!CRLF!^
bin!CRLF!^
mget aaa*.txt!CRLF!^
bye
set FTP2=!CRLF!^
open 127.0.0.1!CRLF!^
%USER%!CRLF!^
%IN_PASS%!CRLF!^
bin!CRLF!^
mget bbb*.txt!CRLF!^
bye
set FTP1 | more +1 > %BATDIR%ftp.txt
ftp -i -s:%BATDIR%ftp.txt >> %BATDIR%ftp.log
set FTP2 | more +1 > %BATDIR%ftp.txt
ftp -i -s:%BATDIR%ftp.txt >> %BATDIR%ftp.log
del %BATDIR%ftp.txt
::pause
ENDLOCAL
パスワードは手入力で、複数サイトで使いまわすようにします。
###########
autoftp.bat
###########
@echo off
SETLOCAL ENABLEDELAYEDEXPANSION
set BATDIR=%~dp0
set USER=root
set /P IN_PASS=rootパスワード:
echo > %BATDIR%ftp.txt
echo > %BATDIR%ftp.log
set CRLF=^
set FTP1=!CRLF!^
open localhost!CRLF!^
%USER%!CRLF!^
%IN_PASS%!CRLF!^
bin!CRLF!^
mget aaa*.txt!CRLF!^
bye
set FTP2=!CRLF!^
open 127.0.0.1!CRLF!^
%USER%!CRLF!^
%IN_PASS%!CRLF!^
bin!CRLF!^
mget bbb*.txt!CRLF!^
bye
set FTP1 | more +1 > %BATDIR%ftp.txt
ftp -i -s:%BATDIR%ftp.txt >> %BATDIR%ftp.log
set FTP2 | more +1 > %BATDIR%ftp.txt
ftp -i -s:%BATDIR%ftp.txt >> %BATDIR%ftp.log
del %BATDIR%ftp.txt
::pause
ENDLOCAL
2014年3月28日金曜日
第28回「権限とcksumを同時に表示させる」
さて、第28回のお題は「権限とcksumを同時に表示させる」です。
「ls -l」と「cksum」の結果を同時に表示して、ファイルの一意性を確認します。
for file in `find . ! -type d -print`
do
printf "%s %s %s %s %s %s\n" `cksum $file | awk '{print $1" "$2}'` `stat -c "%A %G %U %n" $file`
done
「ls -l」と「cksum」の結果を同時に表示して、ファイルの一意性を確認します。
for file in `find . ! -type d -print`
do
printf "%s %s %s %s %s %s\n" `cksum $file | awk '{print $1" "$2}'` `stat -c "%A %G %U %n" $file`
done
第27回「プログラムのシステムコールをトレースする」
さて、第27回のお題は「プログラムのシステムコールをトレースする」です。
プログラムがまともに動いているか確認するときに使ったりします。
strace -p PID
特定のシステムコールのみトレースするときは、
strace -p PID -e open
strace -p PID -e trace=open,read
gdbでデバッグする前に、open,read,writeするところから、
問題の箇所のあたりをつけることに役立ちます。
プログラムがまともに動いているか確認するときに使ったりします。
strace -p PID
特定のシステムコールのみトレースするときは、
strace -p PID -e open
strace -p PID -e trace=open,read
gdbでデバッグする前に、open,read,writeするところから、
問題の箇所のあたりをつけることに役立ちます。
登録:
投稿 (Atom)