ベストアンサー Solarisのdateコマンド 2011/02/28 11:06 dateコマンドで入力値に制限を加えることは可能でしょうか? 方法はありますでしょうか? 例えば、現在時刻から15分以上先の値をセットできなくする。 みんなの回答 (1) 専門家の回答 質問者が選んだベストアンサー ベストアンサー entree ベストアンサー率55% (405/735) 2011/02/28 19:36 回答No.1 ソースコードを修正しない限り不可能でしょう。 そもそも、デフォルトではdateコマンドで日付をセットできるのはrootのみです し、逆にroot権限があれば何でもできてしまう(仮にdateコマンドが削除されて いてもその場でソースを書いてコンパイルすれば理屈上は任意の日時に変更でき てしまう作れてしまう)ので、セキュリティ面からはあまり意味がないことだと 思います。 例えば、以下のプログラムをコンパイルしてrootユーザで実行すれば時計は1時 間後に設定されます。 #include <stdlib.h> #include <sys/time.h> int main () { struct timeval tv; int ret; if (gettimeofday (&tv, NULL) == -1) { perror ("gettimeofday"); exit (1); } tv.tv_sec += 3600; /* after a hour */ if (settimeofday (&tv, NULL) == -1) { perror ("setttimeofday"); exit (1); } exit (0); } それに、仮に現在時刻よりも15分以上先に設定できないようにできたとしても、 同じdateコマンドを2回に分けて実行すれば30分先でも設定できてしまうこと になるでしょう。 広告を見て全文表示する ログインすると、全ての回答が全文表示されます。 通報する ありがとう 0 カテゴリ [技術者向] コンピューターOS(技術者向け)Solaris系OS 関連するQ&A コマンドプロンプトを使用して時間の変更 REM 日付の分解 set TODAY=%date% set y=%TODAY:~0,4% set m1=%TODAY:~5,1% set m2=%TODAY:~6,1% set d1=%TODAY:~8,1% set d2=%TODAY:~9,1% REM 入力要求 set /P chg_y="西暦を入力してください: " REM 西暦変更 date %chg_y%/%m1%%m2%/%d1%%d2% 現在ネットで拾った上記コマンドを使用してPCの日付の変更をしております。 これと同じように時間の部分を変更した場合どのようなコードを書けばいいでしょうか? 例 現在時刻 15:09 bat実行 変更した時間を2桁で入力してください。 16と入力してエンター押すと16:09になるようにしたい。 コマンドプロンプト(2000)で入力値によって処理を変えたい コマンドプロンプト(bat)プログラムの途中で ユーザからの入力を促して入力された値を 変数としてセットし、その値をif文などで 評価することにより分岐させて入力された値によって 様々な処理を行わすことは可能でしょうか。 シェルスクリプトであればreadコマンドのような ものに変わるコマンドを期待しています。 宜しくお願いいたします。 dateコマンドでn分前の時刻を出力(HP-UX) HP-UXのdateコマンドでn分前の時間を出力する方法を知りたいです。 Linux等では、たとえば10分前の時刻を出力したい場合は、 % date -d "10minutes ago" とすればOKですが、HP-UXだとうまくいきません。 ご存知の方がいれば宜しくお願い致します。 ネットワークエンジニアとは?技術職の未来を考える OKWAVE コラム dateコマンドで出てくるDST Windows 10 で動く Windows Subsystem for Linux が正式版になったので早速インストールして Ubuntu で動かしています。そこでコマンドラインから date コマンドを実行したところ以下のように出力されました。 Wed Nov 15 18:00:01 DST 2017 この DST とはなんでしょう? 普通なら JST 等のタイムゾーンが出る所ですよね? DST という名称のタイムゾーンがあるんでしょうか? (だとすると Daylight Saving Time と同じで非常に紛らわしいように思いますが)。 一体これはどういうことかと思い、 date '+%Z %z' をやってみたらこう出ます。 DST +0900 どうやら日本と同じようです。環境変数 TZ に Japan 以外の何か知らない国名がセットされているのかなと思って $TZ を出してみましたが空で、env | grep TZ で出力がないので TZ は完全にセットされていないようです。 じゃあ TZ を Japan にセットしたらどうなるのかというと、これは以下のように JST で出ます。(以下は最初の行が date のみ、次の行が date '+%Z %z' の出力) Wed Nov 15 18:04:49 JST 2017 JST +0900 コマンドプロンプト欲しい結果が出力できない Windows2000です。 dateコマンドの日付から、2003年の「03」を出力したいのですが、うまくできません。 C:\>DATE /T 2003/07/07 月 C:\>for /f "tokens=1-2 delims=/,2 " %i in('date /t') do set year=%i と入力すると、 C:\>set year=003 と出てきます。 C:\>for /f "tokens=1-2 delims=/,20 " %i in ('date /t') do set year=%i と入力すると、 C:\>set year=3 と出てきます。これを、 C:\>set year=30 となるようなコマンドができません。 コマンドプロンプトに強い方がいらっしゃったら、教えてください・・・。 Solaris8でulimitコマンドの設定 Solaris8で、サーバの起動時にulimit制限を設定したいと思っています。シェルはshです。 例えば、ファイルサイズの制限を掛けるときには「ulimit -f 1024」と入力しますが、 コマンドラインからは正常に反映されます。 これを、サーバの起動時に自動的に設定するようにしたいのですが、その方法を教えて頂けませんでしょうか? こちらで試したのは、/etc/default/initに記述したりm、/etc/init.d/適当なファイル名に記述し、そこか らから/etc/rc3.d/適当なファイル名にシンボリックリンクを張ったり、/etc/systemに記述したり・・・とや ってみましたが、コマンドをなめてはいるものの、数値は反映されません。 唯一反映されたのは、/etc/profileに記述したものでした。 SUNのHPを見たり、googleで探しても起動時の設定方法は見つけられませんでした。 どなたかご教授の程、よろしくお願い致します。 コマンドプロンプト 入力値を格納したい 作成したバッチファイルを起動し、パスワードを要求しますが、以降は要求せずに、最初にコマンドプロンプトで入力された値をセットして起きたいのですが、どうしたらよいか教えてください。ちなみに、コマンドプロンプトでパスワードを入力する際は、値は表示されないようにしたいです。 dateとntpdateによる時間設定 こんにちわ。 会社で使用している古いUNIXサーバのdateのセットで質問です。 OSは「BSDI BSD/OS 4.0.1」です。 症状はヘルプの例通りにセットしようとした時、 時間を先に進めるのは問題なくできたのですが、 過去の時間をセットしようとすると下記のメッセージが出てきます。 [作業前のセットされている時間 2002/02/04 16:30] % date 0202041640 → 問題ないです。 ----------- % date 0202011200 date: settimeofday: elevated security level: Operation not permitted というメッセージが出て何も変更されない。 rootでログインして実施してるのですが何故でしょうか? 特別なコマンドでもあるのでしょうか? あと社内にあるNTPサーバから時刻同期をしようとしても問題があります。 % ntpdate clock.****.****.co.jp とコマンドを入力するとRedhat7.2なら 4 Feb 16:37:05 ntpdate[22138]: step time server 10.**.**.** offset -179.826032 sec とメッセージが出て同期が取られるのですが BSD/OSの場合、 4 Feb 16:36:24 ntpdate[8573]: adjust time server 10.**.**.** offset -101.622156 sec と出て同期を取ってくれません。 古いOSで申し訳ないですが宜しくお願いします。 コマンドプロンプトについて コマンドプロンプトのコマンドに『set』があります。 2000/XPにおいては、オプションで[/P]を指定することによりキーボードからの入力を変数にセットできますがWindowsNTにおいても使用することが出来るのでしょうか?(キーボード入力によって実行する処理を変えたい) また、不可能である場合他の方法があればご教授していただけるようお願いします。 コマンドラインのログファイルの作成 Linuxで次のようなプログラムを実現したいのですが どのようにしたらよいでしょうか? (1) シェル起動後、自動的に起動し (2) シェルで入出力されるコマンドラインを指定したファイルに自動的に追加書込みされ * 書込みについては、一行毎に入出力された時刻も同時に書込むものとします 詰まり、次のような記述で、書込みたいのです 入力 時刻 出力 時刻 ・・・ 入力 時刻 出力 時刻 といった感じの書式です (3) 追加書込みされるファイルが一定容量以上になると自動的に別ファイルを生成して、そのファイルに書込まれる これは、Perlなどのスクリプト言語で作るべきでしょうか? それとも、( 例えば、コマンドやリダイレクトだけで作ると言ったような ) もっと簡単な方法がありますでしょうか? ESXiのdateコマンドについて ESXiにSSHで接続してスクリプトを作っているのですが、現在からn日前の日時をを取得する方法がわかりません。 centOSなどでは、date --date '7 day ago' '+%Y-%m-%d' などでできるのですが、ESXiではできません。 1日の前まででは、ymdtime=`TZ=JST+15 date '+%Y%m%d%H%M%S'` などでできるのですが、それ以上だと当然できません。何か良い方法はありますか? Windows7でRWINの値を設定可能にしたのを元に戻すコマンド Windows7でRWINの値を設定可能にしたのを元に戻すコマンド Phoenix001と申します。早速質問に入らせて頂きます。 回線最適化の作業に取り組もうと思いましたが、Windows7では仕様でRWINの値をWindows7自身が自動で決定する機能があり、デフォルトではRWINの値をいじれないため、マイクロソフトのサイトの、 http://support.microsoft.com/kb/929868/ を参照して、コマンドプロンプトに、 netsh interface tcp set global autotuninglevel=highlyrestricted と入力しました(結果はOKと返ってきました。値を変更できるようになったことも確認しています)。 しかし、このコマンドを入力してから復元ポイントを作成していないことに気が付きました(その時点で慌てて復元ポイントを作り、このコマンドを入力した直前までは戻すことが出来ました)。結局デフォルトの設定が一番速かったのでこのコマンドを入力する前に戻したいのですが、どのように入力すれば戻るのか全く分かりません。 なのでこの質問をすることに致しました。戻す方法をご存じの方、どのようなコマンドを入力すればデフォルトの設定に戻るのかお教え下さい。 お手数ですが、宜しくお願い致します。 ****************************************** パソコンデータ OS:Windows7 Home Premium 64bit AIは使う人の年齢や市場にも影響する?人工知能の可能性 OKWAVE コラム コマンドプロンプトのatコマンド コマンドプロンプトのatコマンドを使って、指定時刻にテキストファイルを表示するようにしたいのですが・・・。 at 22:50 /interactive /every:M,T,W,Th,F,S,Su "C:\Users\○○\test.txt" と、このように入力しても、指定時刻にテキストファイルが表示されません。 これは、何がいけないんでしょうか? シェルの中で現在の時間の2分後にコマンドを設定したい。 シェルの中で現在の時間の2分後にコマンドを設定したい。 時間指定でコマンドを実行するのは下記のコマンドでOKなのはわかりましたが、 2分後の時間をとるのがわかりません。 echo "ls" | at 10:11:22 ぐぐった結果は「date -v+2M」というコマンドで取れるとの情報がありましたが、 オプションが正しくないと怒られてしまいます。 使用法: date [-u] mmddHHMM[[cc]yy][.SS] date [-u] [+format] date -a [-]sss[.fff] "date +%T"で時間を取得して中身をばらして+2分してatにセットすればよいと思うのですが。。。 他のやり方でもありましたらよろしくお願い致します。 DOSコマンドでVBSで取得した値をセットしたい DOSコマンドで VBSで取得した値をセットしたい サーバ上のあるフォルダにファイルが蓄積されています。 2011_07_01.csv 2011_07_02.csv 2011_07_05.csv 2011_08_05.csv 今月(8月)になった時点で、先月分(07月)で且つ_01.csv と_05.csvファイル を削除するコマンドを作ろうとしています。 先月を取得する部分をVBSにし、その値をセットしようとしましたが、セット方法が分かりません。 echo WScript.Echo Right("0" & Month(DateAdd("d",-15,Date)), 2)> C:\tmptest.vbs CALL C:\tmptest.vbs とするとメッセージボックスで'07'と出力されます。 イメージですが、この'07'を変数にセットして、 (SET AAA = C:\tmptest.vbsの出力結果 のような) フォルダ内で ????_%AAA%_01.csv ,????_%AAA%_05.csv にマッチすれば削除するとしたいのですが、 (FOR /R %%A IN (????_%AAA%_01.csv,????_%AAA%_05.csv) DO DEL %%A というかんじで) VBSで取得した値をセットする方法を教えてください。 HP-UXのdateコマンドについて いつも拝見させていただいております。今回初めて投稿させて頂きます。 現在ちょっとこまったことがありご質問させて頂きました。 Linuxのコンソール上で `date --date '1 years 1 months ago' +%Y%m` と打つと13ヶ月前の年月が表示されるのですが、HP-UXのコンソールで同じように打ってもコマンドが間違っていて、思ったように答えが返ってきません。 HP-UXで13ヶ月前をコンソール表示させるためにはどのようにコマンドを打てばいいのでしょうか。 ご存知の方がいたら、ご教授お願いできないでしょうか。どうか宜しくお願い致します。 コマンドプロンプトで文字列比較を行う こんばんは。 コマンドプロンプトでプログラムを作成していてわからない点があるので質問させてください。 入力された文字列の長さが4桁でないときにプログラムを終了させたいのですがその方法がわかりません。 ためしにワイルドカードを用いて以下のように作成してみたのですが これだと4桁でも条件分岐ではじかれてしまいます。 なにかいい方法がありましたらご教授ねがいたいです。 よろしくおねがいします。 **サンプル** ************************************************************ set /p date=移動したいファイルの月日を4桁で入力してください : rem 入力された文字列が4桁でないときは終了 if "%date%"=="" ( echo 月日を入力してください。 Pause exit /b ) if not "%date%"=="????" ( echo 入力文字列%date%は不正です。終了します。 Pause exit /b ) ********************************************************** DOSコマンドでの値の範囲チェック方法 DOSコマンドでの値の範囲チェック方法 DOSコマンドでの値の範囲チェック方法を教えてください。 やりたいことのイメージは以下の感じです。 画面からの入力を受けそのあとの処理を実行するが、 入力を受けた際に後続の処理で使用できる値(0~9,A~F)かどうかをチェックし、 使用できない値だったら再入力を促す、という感じです。 :BG SET /P INPUT_BG=値を入力してください: IF (INPUT_BGが1文字ではない || INPUT_BGが0~9,A~Fではない) ( echo 0~9,A~Fの一文字で入力してください GOTO :BG ) …INPUT_BGを使った処理… 最悪の場合、以下のようにIF文を入れ子にすれば実現できることは確認しています。 IF NOT "%INPUT_BG%"=="0" ( IF NOT "%INPUT_BG%"=="1" ( IF NOT "%INPUT_BG%"=="2" ( echo 0~9,A~Fの一文字で入力してください GOTO :BG ) ) ) しかしあまりにもかっこ悪い。 しかもめんどいし、16個の入れ子なんか見たくない。 ということでエレガントな書き方を教えてください。 よろしくお願いします。 DOSコマンドの変数について WindowsXPのマシンで、ログを出力するアプリケーションを実行しているのですが、ログのローテーション機能がないので、とりあえず、DOSコマンドにてローテーションする処理を行おうとしています。 ローテーションの条件は以下のとおりです。 ローテーション : 1日単位(0:00) ログ出力先 : c:\appl\log ローテーション先 : c:\appl\{年月}\{日}.log 0:00に"c:\appl\log"を"c:\appl\200503\09.log"に置き換えるイメージです。 dateコマンドの値をmove処理に変数として代入したいのですが、方法が分からないので、お願いいたします。 コマンドプロンプトでの漢字入力方法 コマンドプロンプトで insert into sample set name = '島 耕作',shinchou = '185'; と漢字入りのデータを入力したいのですが、直接コマンドプロンプトに打ち込むことができず、現在、いったんノートパットに書いたものをコピーして使っています。 コマンドプロンプトでの日本語入力への切り替え方を教えてください。 注目のQ&A 「You」や「I」が入った曲といえば? Part2 結婚について考えていない大学生の彼氏について 関東の方に聞きたいです 大阪万博について 駅の清涼飲料水自販機 不倫の慰謝料の請求について 新型コロナウイルスがもたらした功績について教えて 旧姓を使う理由。 回復メディアの保存方法 好きな人を諦める方法 小諸市(長野県)在住でスキーやスノボをする方の用具 カテゴリ [技術者向] コンピューター OS(技術者向け) Windows系OSLinux系OSBSD系OSSolaris系OSiOS(技術者向け)Android OS(技術者向け)その他(OS) カテゴリ一覧を見る OKWAVE コラム 突然のトラブル?プリンター・メール・LINE編 携帯料金を賢く見直す!格安SIMと端末選びのポイントは? 友達って必要?友情って何だろう 大震災時の現実とは?私たちができる備え 「結婚相談所は恥ずかしい」は時代遅れ!負け組の誤解と出会いの掴み方 あなたにピッタリな商品が見つかる! OKWAVE セレクト コスメ化粧品 化粧水・クレンジングなど 健康食品・サプリ コンブチャなど バス用品 入浴剤・アミノ酸シャンプーなど スマホアプリ マッチングアプリなど ヘアケア 白髪染めヘアカラーなど インターネット回線 プロバイダ、光回線など