>>4480 zsh >パイプを使用した場合と同様、サブシェルで動作する事が原因のようです。 >Solaris8のshで確認した所、forkしてからサブシェルの中でファイルを >オープンしていました。 サブシェルで動作するとは、子プロセスでシェル起動しているというこ ですか。 whileの前に exec 0<file.txt を入れないと、最終行が表示されないということですか。 |
>>4480 zsh あー、なるほど。 >>4467 68user > 補足。Solaris の sh では >> while read -r line; do >> done < file.txt > でもダメなようですね のことですね。別件かと勘違いしておりました。 |
>>4481 お >サブシェルで動作するとは、子プロセスでシェル起動しているというこ >ですか。 その通りです。 >whileの前に >exec 0<file.txt >を入れないと、最終行が表示されないということですか。 サブシェル(while)内で use_buf=1 としても、親シェルには引き継がれないので 最後の if 文が必ず偽になります。 よって、最終行(最終行が半角スペースで始まる場合には最終 2 行)が 表示されないと思います。 |
>>4483 zsh 試して見ました。 ファイルの最後が空行(最終行が改行コードで終了)の場合、 whileの前に exec 0<file.txt を入れないくても、最終行が表示されました。 最終行の終わりが、改行コードではなく、ファイルの終端(EOF)がある場合、 catコマンドでファイルを表示した時、最終行の後ろに、プロンプトが来る ファイルをやると、最終行が表示されません。 whileの前に exec 0<file.txt を入れた場合でも。 |
>>4485 お >ファイルの最後が空行(最終行が改行コードで終了)の場合、 >whileの前に >exec 0<file.txt >を入れないくても、最終行が表示されました。 試してみましたが、最終行(空行)は表示されませんでした。 Solaris 標準の sh ですよね? >最終行の終わりが、改行コードではなく、ファイルの終端(EOF)がある場合、 >catコマンドでファイルを表示した時、最終行の後ろに、プロンプトが来る >ファイルをやると、最終行が表示されません。 それは read コマンドが読込めないので、仕方がないというか そこまでやるならシェルスクリプトにこだわらない方が良いかと。 |
GD::Graph で遊んでみました。 http://x68000.q-e-d.net/~68user/webcgi/gd-graph.html http://x68000.q-e-d.net/~68user/webcgi/sample/perl/graph-maker.cgi |
はじめまして。 おじゃまいたします。 早速ですが Opensslライブラリを使用して復号処理を実装したいと考えておりまして RSA鍵交換の場合は、おおまかに分かりましたが DH鍵交換の実装方法がなかなか調べても分からない状況です。 おそらくRSAとは使用するI/Fが異なるのではないかと考えています。 ご存知の方いらっしゃいましたら ご教授頂けないでしょうか。 RSA鍵交換の場合は下記のような感じです(秘密鍵は知っている前提) (1) pre_master_secretを取得する RSA_private_decrypt()を呼び出す (2) 上記のpre_master_secretとclient_randomとserver_random値より master_secretを生成 (3) データを復号する(master_secretが分かれば復号できる) EVP_Cipher()を呼び出す |
はじめまして。 おじゃまいたします。 早速ですが Opensslライブラリを使用して復号処理を実装したいと考えておりまして RSA鍵交換の場合は、おおまかに分かりましたが DH鍵交換の実装方法がなかなか調べても分からない状況です。 おそらくRSAとは使用するI/Fが異なるのではないかと考えています。 ご存知の方いらっしゃいましたら ご教授頂けないでしょうか。 RSA鍵交換の場合は下記のような感じです(秘密鍵は知っている前提) (1) pre_master_secretを取得する RSA_private_decrypt()を呼び出す (2) 上記のpre_master_secretとclient_randomとserver_random値より master_secretを生成 (3) データを復号する(master_secretが分かれば復号できる) EVP_Cipher()を呼び出す |
>>4488 take >>4489 take 2度書きしてしまいました。 申し訳ありません。 |
>>4489 take > DH鍵交換の実装方法がなかなか調べても分からない状況です。 わたしにもさっぱりわかりませんが、以下の URL はチェック済ですか? http://www.openssl.org/docs/crypto/dh.html http://matagi.sakura.ne.jp/mt/archives/2005/03/openssldh.html |
>>4491 68user >わたしにもさっぱりわかりませんが、以下の URL はチェック済ですか? > http://www.openssl.org/docs/crypto/dh.html > http://matagi.sakura.ne.jp/mt/archives/2005/03/openssldh.html お返事ありがとうございます。 DH法用の関数はこれなんですね。 お教え頂いた情報を参考に、更に調べてまいります。 |
シェルスクリプトで、 ファイルからフィールド1を読み込み、前後にシングルクォーテーション「'」を 付けて、区切りの1行にしたいのですが、「'」を上手く付けることができません。 「'」の使い方が不正とかで怒られます。 #!/bin/csh nawk -F"," ' { \ if (FNR==1) printf("\'%s\'", $1); \ else printf(",\'%s\'", $1) \ }' file.txt 一度、ダブルクォーテーション「"」にしてからsedで置換しよとしたのですが、 sedでも「'」の使い方が不正とかで怒られます。 nawk -F"," ' { \\ if (FNR==1) printf("\"%s\"", $1); \\ else printf(",\"%s\"", $1) \\ }' file.txt | sed 's/"/\'/g' または、 set a = `nawk -F"," ' { \\ if (FNR==1) printf("\"%s\"", $1); \\ else printf(",\"%s\"", $1) \\ }' file.txt` echo $a | sed 's/"/\'/g' どのようにすればよいのですか。 OSは、Solairs8 |
>>4493 お 参照するファイルについて書いていませんでした。 # cat file.txt Tokyo, Oosaka, Nagoya, Kyoto, Kyusyu, |
>>4493 お csh は馬鹿なので、シングルクォートの中にシングルクォートを書くことはできません。 つまり、 echo '\'' はエラーです (sh も同様)。同様に echo "\"" もエラーになります (sh ならこっちは OK)。 で、csh には (sh も) echo "文字列1""文字列2""文字列3" echo "文字列1"文字列2"文字列3" echo '文字列1''文字列2''文字列3' echo '文字列1'文字列2'文字列3' のいずれも、 echo "文字列1文字列2文字列3" と (基本的には) 同じ、という性質があります。 よって、csh で 'abcdef' を出力したい場合は、 echo "'"abcdef"'" echo "'""abcdef""'" などとします。 シェルのクォートは「ネストさせない」が鉄則です。 |
>> 4495 無理なのですか。 一度、ファイルから取得したものループでechoコマンドを 使いながら編集するということですね。 #!/bin/csh set ALL="Tokyo Oosaka Nagoya Kyoto" @ i = 1 foreach EACH ($ALL) if ($i == 1) then set ALLS=`echo "'"$EACH"'"` else set ALLS=`echo $ALLS",'"$EACH"'"` endif @ i++ end echo $ALLS |
>>4496 お 確認していませんが、awk のプログラム部分を別ファイルにして -f オプションで指定しても出来ると思います。 (この場合はシングルクォートのエスケープは不要です。) |
>>4496 お > 無理なのですか。 いいえ。 awk -F"," '{if (FNR==1){printf "'"'"'%s'"'"'",$1}else{printf ",'"'"'%s'"'"'",$1}}'<file.txt |
>>4497 zsh >>4498 68user zshさん、68userさん ありがとうございます。 出来ました。 「'」を「"」で囲って連続して付けることは試してはいたのですが、 私が試していたのとは違っていました。 それよりも、「'%s'」とするのには気が付きませんでした。 常に「"%s"」としていました。 ただ、 awkで行うと、 ,'Tokyo','Oosaka','Nagoya','Kyoto','Kyusyu' と1行目に読み込んだものにもカンマ「,」がついてしまします。 nawkで行うと 'Tokyo','Oosaka','Nagoya','Kyoto','Kyusyu' となります。 何が違いとかあるのでしょうか。 |
>>4499 お Solaris の awk では FNR という変数はありません。 NR に変更すれば動作すると思います。 (NR と FNR では、複数ファイルを入力とした時に値が異なります。) |
はじめまして、漠然とした質問なのですが、 SSLv3のハンドシェイク処理の部分を実際に (Cで)実現する方法を知っている方、もしくは 何か参考になるものがあれば教えてください。 |
環境は、vine linux 、 openssl-0.9.7d-0vl3.2 です。 |
はじめましてe。いつもいろいろと参考にさせてもらってます。 いろいろ試したのですが、わからないので質問させて下さい。 http://tomorrows-wind.at.webry.info/200507/article_21.html ↑ちょうど私の書いたプログラムとほぼ同じだったので ちょっと勝手に拝借したんですが、このソース 私のやってる環境では、エラーがでるんですよね。 エラーが出るのは、最後のRSA_private_decrypt関数です。 これは私だけなんでしょうか?どなたか試していただけませんか? 鍵に関しては、コマンドラインから暗号化,復号化に成功しているので 問題ないと思われます。 お願いします。 実行環境:vine linux OpenSSL 0.9.7d 17 Mar 2004 |
>>4503 esam dectxt = malloc(RSA_size(rsapriv)); を、 dectxt = calloc(1, RSA_size(rsapriv)); と書き換えることでエラーが消えることを確認しました。 (環境: Vine Linux 3.2, OpenSSL 0.9.7d 0vl3.2) |
>>4503 esam >>4504 は無視してください。 > http://tomorrows-wind.at.webry.info/200507/article_21.html の plaintxt = malloc(sizeof(char)*7); strcpy(plaintxt, "abcdefg"); というのがおかしいですね。ここを直せばうまく動いた気がします。 |
>>4503 esam たびたびすみません。 if((enclen = RSA_public_encrypt(strlen(plaintxt), ... を if((enclen = RSA_public_encrypt(strlen(plaintxt) + 1, ... とし、 if((declen = RSA_private_decrypt(strlen(enctxt), ... を if((declen = RSA_private_decrypt(RSA_size(rsapub), ... としなければいけません。 |
>>4503 esam if((declen = RSA_private_decrypt(RSA_size(rsapub), ... は if((declen = RSA_private_decrypt(enclen, ... のほうがスマートな気がしてきました。 |
はじめまして、68userさん おじゃまいたします。 ネットワークプログラミングの基礎知識 大変参考にさせてもらってます! 現在、SSL/TLS でアクセスしてみよう (1) や >>3958 の記事のsslでkeep-aliveを参考にして sslでの接続を勉強させて頂いています。 早速ですが https-client-keep-alive.c や テストで接続と切断を関数化して分けてみて、 リクエストを送らず受信もしないと SSL_shutdown()で0を返します。 (丁度、https-client.c のソースの118行目から146行目までを削った状態です) ためしに接続、受信、切断とすると SSL_shutdown()で1を返すので、 (丁度、https-client.c のソースの118行目から128行目までを削った状態です) 受信が最後まで完了しなければ、 SSL_shutdown()で0を返しERR_print_errors_fp には何も出力しないと推測しているのですが、 間違っていないでしょうか? ご存知の方いらっしゃいましたら ご教授頂けないでしょうか。m(_ _)m (環境: fedora core 4, gcc-4.0.2-8.fc4, openssl-0.9.7f-7.10) |
>>tkobaさん 早急な返信ありがとうございました。 いわれたとおりになおしてみました。 あとは、>>4505の部分ですが。。。 いろいろためしてみましたがやはりエラーがでてしまいます。 |
>>tkobaさん すみませんできていました。 問題は ご指摘のとおりRSA_private_decrypt関数の第一引数でした。 ありがとうございました。 |
はじめまして 先日freebsd 6.0をインストールをしました。昨日までxdm順調に動いていました。 今日、xdmでloginできなくなりました。ユーザー名とパスワードを入力したら、また 登録画面が出てきました。本来welcome to hostname のところは今welcome to 1に なりました。どういう原因でしょうか。よろしくお願いします。 |
>>4500 zsh (NR と FNR では、複数ファイルを入力とした時に値が異なります。) どうなるのでしょうか。 どのように確認できますか。 |
UNIXのシェルで2点教えて頂きたいことがあります。 ●1点目 sedコマンドを使用して置換したいのですが、sed内で変数は 使用可能なのでしょうか。 ----------------- #!/bin/sh DIR="/home/guest/" ls ${DIR}*.CSV | sed 's/$DIR}//g' 置換されずにそのまま出力されます。 シェル内の変数を、sedに渡して置換させることは可能なのでしょうか。 ls ${DIR}*.CSV | sed 's/\/.*\///g' 削除した部分がディレクトリと言う事なので、「's/\/.*\///g'」として みたのですが、正しい使い方なのでしゅか。 ●2点目 変数に格納されているファイル名から番号が一番大きいファイル名 を作りたいのですが、awkを使用して簡単にできますか。 例えば、/tmp配下に、 test0001.CSV test0002.CSV test0004.CSV とファイルがあるとします。 ls、変数に格納し、awk等で、「test0005.CSV」を求めたいのですが。 --------- #!/bin/sh FileLst=`ls /tmp/*.CSV` echo $FileLst | awk ????? |
>>4514 ロー 環境を書き忘れました。 UNIX:Soralis8 シェル:Bシェル |
UNIX の部屋 http://x68000.q-e-d.net/~68user/unix/ を更新しました。 >>4460 mkt > ・fgrep と Gimp の解説文が途中で切れてしまっているように思います。 fgrep については、とりあえず掲示板での発言にリンクを張りました。 http://x68000.q-e-d.net/~68user/unix/pickup?fgrep > ・記号の 2 項目め(「"」の項と思われる部分)の見出し行が抜け落ちてしまってます。 正しく表示されるようにしました。 http://x68000.q-e-d.net/~68user/unix/pickup?%22 " の解決のため、10年近くつぎはぎでやってきた汚い部分を全面的に見直し たため、もしかしたら UNIX の部屋の検索部分にエンバグしている可能性が あります。怪しい挙動を見つけられた方は教えていただけると幸いです。 >>4501 hidemaru > SSLv3のハンドシェイク処理の部分を実際に(Cで)実現する方法 >>4502 hidemaru > 環境は、vine linux 、 openssl-0.9.7d-0vl3.2 です。 OpenSSL を使っていいなら SSL_connect(3) を使えばいいですし、OpenSSL を 使わないなら「環境は OpenSSL」とわざわざ書く理由がわからないです。 >>4508 dynamite > SSL_shutdown()で0を返しERR_print_errors_fp には何も出力しないと > 推測しているのですが わたしもよくわかってませんが調べる時間がないです。すみません。 マニュアルにそう書いてありますか? >>4511 blueeyes > 本来welcome to hostname のところは今welcome to 1になりました。 原因はわかりません。リブートしても同じ挙動かどうか、シングル ユーザモードで起動するとどうなるか、/var/log に何か出ていないかを 確認してください。 >>4514 ロー > ls ${DIR}*.CSV | sed 's/$DIR}//g' '' で囲んだら変数展開されないので、"" で囲みましょう。変数展開できた としても s//home/guest///g は sed 的にエラーですが、これはまた別の話。 > ls、変数に格納し、awk等で、「test0005.CSV」を求めたいのですが。 「ls で表示したときに最後に表示される行」とみなせるのであれば、 echo $FileLst | awk '{print $NF}' など ($NF は gawk では動きましたが、一般的な awk で使用できるかどうかは わかりません)。 まぁ、awk には列で渡すのではなく、行で渡した方が幸せだと思うので、 ls /tmp/*.CSV | awk 'END { print }' の方がいいと思います。とか言い出すと、 ls /tmp/*.CSV | tail -1 でいいじゃん、って話になりますけどね。 |
>>4516 68user ありがとうございます。 >> ls ${DIR}*.CSV | sed 's/$DIR}//g' >'' で囲んだら変数展開されないので、"" で囲みましょう。変数展開できた >としても s//home/guest///g は sed 的にエラーですが、これはまた別の話。 ダブル「""」で囲んだら展開されませんでした。シングル「''」で囲んだら展開 されました。 > echo $FileLst | awk '{print $NF}' >など ($NF は gawk では動きましたが、一般的な awk で使用できるかどうかは >わかりません)。 一般的なawkでも使用できました。 >ls /tmp/*.CSV | awk 'END { print }' は、ダメでした 結果が得られませんでした。 |
>>4512 お FNR に現在処理しているファイルのカレントレコード番号が セットされるのに対して、NR には (n)awk が実行されてから 読み込んだレコード数がセットされています。 $ nawk '{ print "NR:" NR "/FNR:" FNR }' a.txt b.txt 等とすれば違いが確認できると思います。 >>4517 ロー Solarisの(n)awkでは $ /tmp/*.CSV | awk '{ f=$0; } END { print f }' のようにしないといけないようです。 |
>>4518 zsh ありがとうございます。 awkのmatch関数なのですが、awk内で使用するとエラーが ですのですが、どこか使い方がいけないのでしょうか。 抜粋ですが、 awk ' { pos=match($1,/.CSV$/); }' ${TEMPFILE} ファイル名から拡張子以降を取り除くため、拡張子までの 位置を求めようとしています。 awk: syntax error near line 10 awk: illegal statement near line 10 awk: 構文エラー (10 行目の周辺) awk: 不正な文を検出しました。 (10 行目の周辺) が発生します。 |
>>4519 お Solaris 標準の awk (/usr/bin/awk) には、match 関数が存在しません。 対応策としては (1)index 関数を使用する →ただし、index 関数は正規表現を使用できません。 (2)nawk を使用する (3)/usr/xpg4/bin/awk を使用する といった所でしょうか。 |