SASプログラムとログを解析するユーティリティを開発するための備忘録です。This is a memo to develop utility that analyzes the SAS log.
2020年10月22日木曜日
2020年9月19日土曜日
SAS9のプロセスから環境変数の設定を生成
何かのスクリプトを使うときに億劫に感じるのが設定です。で考えたのが動いているプロセスから主要なプロダクトのディレクトリを探す方法です。
#!/bin/sh function variable() { TEMPLSIT=`mktemp --tmpdir=/var/tmp XXX.sh` while read var cmd depth do ps --no-headers --format cmd -C $cmd | \ awk -vcmd=$cmd '{ for(i = 1; i <= NF; i++) { if (index($i, cmd) > 0) { print $i; exit} } }' | \ awk -vd=$depth '{ n = split($1, a, "/"); for (i = 2; i < (n + d); i++) { printf("/%s", a[i]) } print ""; }' | \ awk -vvar=$var '{ printf("export %s=%s\n", var, $1 ) }' done << _EOF_ SAS_HOME sasauth -4 SAS_CONFIG MetadataServer.sh -3 LSF_HOME mbatchd -3 PM_HOME jfd -3 RTM_HOME lsfpollerd -2 GMS_HOME gabd -1 _EOF_ rm -f $TEMPLSIT } variable実行すると環境変数の定義を生成します。
[root@dwtcjp conf]# sh variable.sh export SAS_HOME=/SAS/SAS_HOME export SAS_CONFIG=/SAS/SAS_CONFIG export LSF_HOME=/SAS/LSF_HOME export PM_HOME=/SAS/PM_HOME export RTM_HOME=/SAS/RTM_HOME export GMS_HOME=/SAS/LSF_HOME/gms
2020年7月23日木曜日
英語キーボードでCapsLockに半角/全角を割り当てる
肩凝り対策でスプリットのキーボードBAROCCO MD770 RGBを使い始めました。英語配列なので半角と全角の切替が面倒です。デフォルトだとCapsLock+ShiftですがCapsLockだけで切り替えたいのでAutoHotKeyをインストールしました。デスクトップ上で右クリック、新規作成でAutoHotKeyの設定ファイルを新規作成して、6行目以降のの部分を追加します。
CapsLockで日本語/英語の切替、ESCキーを2回タイプで大文字/小文字を切り替えます。
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. ; #Warn ; Enable warnings to assist with detecting common errors. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. CapsLock:: Send, {vkF3sc029} return Esc:: Keywait, Esc, U Keywait, Esc, D T0.3 If (ErrorLevel=1) { Send,{Esc} } else { SetCapsLockState % !GetKeyState("CapsLock", "T") } returnしばらくこれで使って身体を慣らします。
2020年7月6日月曜日
スクリプトに組み込むための1行コード(one-liner)
忘れやすいのでメモ
1. Unixの場合には-stdio オプションで、コードを標準入力から投入できる。
1. Unixの場合には-stdio オプションで、コードを標準入力から投入できる。
echo "proc options option=dms value; run;" | sas -nodms -stdio2. Libnameを書かなくても任意のディレクトリにSASデータセットを出力できる。
echo "data '/var/tmp/foo.sas7bdat'; set sashelp.class; run;" | sas -stdio
2020年6月9日火曜日
SAS Enterprise Guide 失効日
SAS Enterprise Guide 4.1-6.1を使っている人は要注意
2020年12月1日で失効するとアナウンスがあります。
2020年12月1日で失効するとアナウンスがあります。
Usage Note 33359: SAS® Enterprise Guide® expiration dates
https://support.sas.com/kb/33/359.html2020年6月4日木曜日
RHEL7 で ntpの時間が合わない
解決に時間が掛かったのでメモしておきます。
/etc/ntp.conf にサーバ設定して、自動起動で enable にしても時間が合わない現象にぶつかりました。結果としてうまくいったのは、systemctl disable chronyd を無効化して止めるでした。デフォルトは、システムクロックに合わせるようになっていた。
訂正
/etc/chrony.conf にサーバ設定するのが正解でした。
/etc/ntp.conf にサーバ設定して、自動起動で enable にしても時間が合わない現象にぶつかりました。結果としてうまくいったのは、systemctl disable chronyd を無効化して止めるでした。デフォルトは、システムクロックに合わせるようになっていた。
訂正
/etc/chrony.conf にサーバ設定するのが正解でした。
2020年5月9日土曜日
SAS Enterprise Miner Web Clientの起動
パスを良く忘れて、検索で見つかりにくいのでメモしときます。
http://sample.hostname.com:7980/SASEnterpriseMinerJWS/Status
http://sample.hostname.com:7980/SASEnterpriseMinerJWS/Status
2020年4月23日木曜日
SASフォルダの認証の設定値を確認
SAS Management Consoleから、SASフォルダに認証を設定するのは良くあることです。これで面倒なのが再鑑で値を確かめるのがGUIでポチポチ叩いて画面ショットを取ることです。
そんなときには、以下のツールを使って設定値をテキストに落とせば簡単、比較もしやすいです。設定値のエビデンス取得、SASフォルダやオブジェクトの設定確認に使えます。
そんなときには、以下のツールを使って設定値をテキストに落とせば簡単、比較もしやすいです。設定値のエビデンス取得、SASフォルダやオブジェクトの設定確認に使えます。
Batch Tool: sas-show-metadata-access
もうひとつ別な方法として、%MDSECDS があります。
これはメタデータオブジェクトと権限をデータセットに出力してくれますが、明示的な設定と継承が混じるために厳密な設定確認にならない恐れがあります。
2020年4月20日月曜日
備忘: RHELのサブスクリプション手順
RHELのサブスクリプションの手順を短く書きます。私がアホなのか、たまにしかやらない手順だからなのか、1年に一回ぐらい手間取ります。こういう短い簡潔な手順があると役立つのではないか?
1. Red Hat Customer Portalにユーザ登録します。名称が「Red Hat Enterprise Linux開発者プログラム」かもしれません。
2. サブスクリプションしたいマシンにrootでログイン
3. subscription-manager remove で登録状況を掃除
4. subscription-manager clean で登録状況を掃除
5. subscription-manager registerで登録します。このとき指定するユーザ名はProfile>My ActivityのUsernameです。私はメールアドレスを打ち込んで何度も失敗しました。
6. 「このシステムは、次のIDで登録されました: ...」 が表示されることを確認してから
7. subscription-manager list --available でプールIDを表示します。プールIDはRed Hat Customer Portalにログインしてサブスクリプションの利用状況からでも確認できます。
8. subscription-manager subscribe --pool=**** でプールIDを指定してサブスクライブ
9. 「サブスクリプションが正しく割り当てられました」がでたらOK
1. Red Hat Customer Portalにユーザ登録します。名称が「Red Hat Enterprise Linux開発者プログラム」かもしれません。
2. サブスクリプションしたいマシンにrootでログイン
3. subscription-manager remove で登録状況を掃除
4. subscription-manager clean で登録状況を掃除
5. subscription-manager registerで登録します。このとき指定するユーザ名はProfile>My ActivityのUsernameです。私はメールアドレスを打ち込んで何度も失敗しました。
6. 「このシステムは、次のIDで登録されました: ...」 が表示されることを確認してから
7. subscription-manager list --available でプールIDを表示します。プールIDはRed Hat Customer Portalにログインしてサブスクリプションの利用状況からでも確認できます。
8. subscription-manager subscribe --pool=**** でプールIDを指定してサブスクライブ
9. 「サブスクリプションが正しく割り当てられました」がでたらOK
2020年4月6日月曜日
LOCKDOWNで指定できるディレクトリを制限
セキュリティに関心のある人向けの投稿です。サーバクライアントの構成で、フォルダのアクセス制限をする方法を調べていたら、ありました。だいぶ昔、2014年の記事 ”Fencing in your SAS users with LOCKDOWN” なので、長いこと気が付いていなかった。
これを実行すると、1つ目がエラーになります。検索に引っ掛かるようにエラーメッセージをタイプしておきます。この投稿を書いている時点では、日本語のエラーメッセージはヒットしません。ERROR: SAS がロックダウン状態の場合、パスc:\tempはアクセス可能なパスのリストに含まれません。
悪意あるユーザが、コードタスクでディレクトリのパスを探索すると、他の人、他の部署に見せたくないものが見えてしまう可能性があります。これを防止する手段が、LOCKDOWN システムオプションです。設定の方法は、前述の記事を参照してください。許可されていないディレクトリにLIBNAMEを割り当てようとすると、どのようなエラーが起きるか示します。
Workspaceサーバのディレクトリにある設定ファイルをいじって、LOCKDOWNのオプションと許可するパスを設定します。
これを実行すると、1つ目がエラーになります。検索に引っ掛かるようにエラーメッセージをタイプしておきます。この投稿を書いている時点では、日本語のエラーメッセージはヒットしません。ERROR: SAS がロックダウン状態の場合、パスc:\tempはアクセス可能なパスのリストに含まれません。
このLOCKDOWNオプションで物理パスの指定を守り、アクセス権をより強固に縛るには、Metadata-Bound Libraries を使えとのことです。これを実運用で使っているところを知らないけど、単に私が無知なだけなのか?同僚に聞いてみよう。
2020年3月30日月曜日
PROC HTTP コロナウィルスのデータ
Webページに掲載されているCSVファイルを読み込むサンプルです。PROC HTTPを使って、コロナウィルスのデータCSVを読み込んでいます。
エラー”SSL Error: Invalid subject name”の対応として、オプションを設定していますが、これはProblem Note 64218に情報があります。
filename myfile "/var/tmp/total_cases.csv"; options set=SSL_USE_SNI=1; options set=SSL_SNI_HOSTNAME="covid.ourworldindata.org"; proc http url="https://covid.ourworldindata.org/data/ecdc/total_cases.csv" method="GET" out=myfile; run; proc import out=work.total_cases datafile=myfile dbms=csv replace; getnames=yes; datarow=2; guessingrows=200; run;
登録:
投稿
(
Atom
)