えくすとらんのブログ

起動時自動実行py 更新。。

IDEを使っていたため気づかなかったのですが

昨日のスクリプト...実行すると一瞬で消えますね

せっかく実行日が見やすいように考えたのに台無しです

ですので更新です

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp

#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or no touch):  ")
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("no touch")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        cmd = "ls "
        sp.call( cmd, shell=True  )
print("実行日でなければ5秒後にソフトを終了します")

time.sleep(5)

こんな感じ

今回は実行日にシェルコマンドlsが実行されます
実行日でなければ5秒後に自動的に終了します

使い方(例)
  • biosタイマーでpcの起動を設定
  • スクリプトのデスクトップエントリーを作りスタートアップに登録しておく
  • 初回起動は手動で実行し何日後にシェルコマンドを実行させるか入れておく
  • スタートアップから起動されるとオートで”コマンド実行日まであと何日”が減ってゆく(これはスクリプトが実行されるとセーブテキストの”あと何日”の数字が減っていくようになっています。*更新のために手動実行した場合も減ってしまいますので内部処理2日前までに更新しないと手動実行でコマンドが実行されることになります(危険!)
  • 実行日になるとコマンドを実行します

ツッコミどころ満載です(自動でパソコンの電源を切れるように設定しないと意味がないです^^)
まだまだ改良の余地があるのかどうなのかもわかりません
自分で使うだけなのならこれでいいようなきもしています

素人が趣味で作ったものですので使用の際は精査の上自己責任にてお使いください
このソフトを起動させておこったいかなるトラブルにも対処できませんのでよろしくおねがいします


更新がなくなったら○日後自動でコマンド実行  python3

この前のブログではpythonプログラムをスタートアップで

起動する方法を調べてメモさせてもらいました

それもこれも実はいわゆる遺言ソフトといわれるものを

作ってみたかったというのがあって自分にもしものことが

あったときに自動でコマンド..あるいはソフトを起動できたら

いいのになぁとおもっていました

で・・・一応それらしいのを書いてみました

#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import sys, select
import subprocess as sp

#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run):  ")
i, o, e = select.select( [sys.stdin], [], [], 10 )

if (i):
    print("input", sys.stdin.readline().strip())
    a = "y"
else:
    print("You said nothing!")
    a = "n"
if a == "y":
    global b
    global f
    b = input("何日後に設定しますか?:  ")
    print("実行日まであと{}日です".format(b))
    f = open('jigensave.txt','w')
    f.write(b)
    f.close()

elif a == "n":
    f = open('jigensave.txt')
    for b in f:
        b = int(b) - 1
        print("実行まであと{}日です".format(b))
        f = open('jigensave.txt','w')
        f.write(str(b))
        f.close()

#実行日を決定
future = today + datetime.timedelta(days=int(b))
#実行日から30日を取得(継続期間)

dur = future  +   datetime.timedelta(days=30)
#継続期間表示
for i in range((dur - future).days + 1):
    jikkou = future + datetime.timedelta(days = i)
    if today < jikkou:
        print(str(jikkou) + ":実行予定です")
    elif today > jikkou:
        print(str(jikkou) + ":過去へ戻ることはできません")
    elif today == jikkou:
        print("実行しました")
       #シェルコマンドを実行
        #cmd = "ls "
        #sp.call( cmd, shell=True  )

この設定では○日後から30日間プログロムの実行を試みます

シェルコマンド(subprocess call)
のところはコメントにしてあります
一応 lsなんて書いてみましたがrmやddなどのコマンドを
使うと更新がなくなってから○日後にファイルやフォルダを
消すなんて使い方ができることを想定して作っています
権限あり(shell実行):
sp.call('echo "pass" | sudo -S command',shell=True)

スタートアップで起動するたびに一日づつ実行日が減っていきます 
データセーブの為にテキストファイル(jigensave.txt)
をpyファイルと同じ階層に
吐き出します(中身は”何日後”が数字で入っています。作成のあとは起動のたびにマイナスされる数字を上書きしていきます)

素人がなにもわからずに作っているものですので使用の際は
精査の上お使いください 

またプログラムで起こったいかなるトラブルにも対応できませんのでよろしくおねがいします

自分用メモです

2018・8・20 こうのとり発見!


去年も同じ場所にいたのです。鳥の名前がわからず

たぶんクロトキという鳥だろうと思っていたのですが

なにかちょっとした違和感を覚えもう一度調べて見たところ

これだ!とおもう鳥を見つけました

名前はコウノトリ・名前をよく聞く割に実物は写真も

見たことがない為、羽のさきが黒くて大きなクロトキと

間違えていました よくみるとコウノトリは頭が白く

クロトキは頭が黒いという決定的な違いがありました

ウィキペディアによると日本での野生個体はちょっと昔に

絶滅してしまったらしい ということは

どこかのセンターで飼育放鳥されたものかなと思っていますが

どちらにせよ 野生で見られるのはかなり”レア”な体験です

コウノトリさんはこの場所が気に入っているようで今年も

この辺にやってきてくれました(去年は2匹いたのですが...)

遠くからそっと眺めているのでまたきてくださいね^^


昨日の自動実行を更に自動実行

OS上でスタートアップ登録した自作pyスクリプト

は今の所起動時に問題なく動くことがわかりました

さらにブート自体を自動で行うことができれば

朝起きる→パソコン起動してる→パソコンのソフトも起動してる

→(^^)ニコニコ

ということに・・

調べてみるとbiosからの設定でタイマーブートできるようで

これを使ってみました

とりあえず次の朝に起動するように設定をすませ外出し

夕方帰ってくると....あれれ起動してるぞ

設定を見直してみるとどうやらbiosで動いている時計の時刻

(RTC)が違うようです

更に調べてみるとこの時刻はグリニッジ標準時刻をさして

いるようでしたOS内で使っている時刻はこの時刻に

ローカルタイム補正(Asia/Tokyo +9:00)がかかって

いて日本時間を表示しているようです

お察しのとおりえくすとらんがbiosに設定した時刻は

補正のかかったほうの時間ですので朝起動のはずが真っ昼間に

起動しちまったということのようです

気を取り直してグリニッジ時間で朝起動を設定

今日は朝からパソコンのまえで正座してまちかまえ

動くかどうか確かめてみました

結果は成功!ちゃんと動きました スタートアップも

成功しています

あとはシャットダウンも自動化できれば

電気が止められなければえくすとらんがいなくても

勝手に起動・勝手に

ソフトを起動し勝手に切れるを繰り返すロボットの完成ですね






起動時 python自動実行プログラムを自作

pythonでつくった自作プログラムを起動時走らせてみたい

ということでちょっと調べてみた

やり方は何種類もあったのだが今の環境(archlinux lxde)

でしっくりくるのは

作ったpythonスクリプトのデスクトップエントリーを作成して

/home/***/.config/autostartに放り込むというものでした

(***はusrname)

作ったpyfileは

#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
import  time
#時間を取得
time = time.localtime()
if __name__ == "__main__":
    print("今日は" + str(time[0]) + "年" + str(time[1]) + "月" + str(time[2]) + "日です")
input()

とりあえずこんな感じのものです ターミナルで月日がでます
いまはこれがデスクトップに置いてあります

そしてつくったdesktopentryは

[Desktop Entry]
Name=jigenpy

Exec=lxterminal -e python3.7/home/***/Desktop/jigen.py

Type=Application

こんな感じのものを ***.desktopの名前で保存

あとはできたファイルを/home/ユーザー/.config/autostartにいれました

ついでに/usr/share/applicationsに放り込むと

スタートメニューに自作プログラムが表示されますね


ログオフ・ログインしてみると



ちゃんと実行されたようです

とりあえずφ(..)


もどってきました lxdeの時計

WMをしばらく使っていたxfce4からまたlxdeに戻してみました

自分の環境の不具合は解消しているようです(メニューがでなかったのですがなぜか今回のインストールでは復活していました)

慣れの問題なのか...やっぱりlxdeはいいなぁ

xfceで使っていたターミナルのフォントRictyをlxterminal

にも設定してみました

話は変わりますが...

えくすとらんのlxdeパネルのデジタル時計の設定を書いておきます


  • ツールバーの時計を右クリック
  • デジタル時計の設定をクリック

  • 時刻表示のフォーマットを
  1. %Y年%m月%d日 %H時%M分%S秒
に変更です


日本語表記にするとなんか見やすいような気がします



なんだかおかしい

最近 通信障害が多くWEB閲覧時よくサーバーから弾かれるようになった

結果からいうと接続業者よりホームゲートウェイをかえたことにより(端末云々よりIPが変わった
為とみています)

不具合がなくなったようです

しかしおかしいのは閲覧中あるいは通信中などに突然弾かれることがあった

ということでサーバー側でIP閲覧制限をかけるのであればそもそもトップ画面に

繋がらないのではないかなどと思っていました

だとすれば考えられることとしては経路途中でそのIPアドレスを攻撃し

接続障害をおこす手法などがあるのではないかなどと考えたりしていますが

所詮素人のかんがえることですので憶測でしかありません

もしそうであれば防ぐには不定期的なIPアドレスの変更が効果的なのではないか

と考えてみました

単一のグローバルIPを長く使っていると次第に情報が抜き取られていることも

考えられます

しばらくは現在のIPで様子をみてみようと思っていますがまた同じような

不具合が出てきた場合はやむなく自宅からグローバルIPの変更を試みようかと

おもっています(最終端末に自PCより一時的にIPを振ってあげて戻すとグローバルIPの

再割当があるかもしれないということがどこかのサイトに書いてありました)

...うーん 前々から思っていたのですがグローバルアドレスで個人情報は

わかりませんとかよく書いてあるけど田舎だと人が少ないので結構ピンポイントで

特定されそうな気がしてこわいですね(まあ貧乏暮らしですので特定されたところで何かを盗られることはないでしょうが...)

さて...今日も暑くなりそうですねぇ

みなさまもお体にお気をつけてお過ごしくださいませノノ

追記 8・13

ずっと続いていた不具合でしたが原因はハッキングや通信異常などではなく
ハード側メモリスロットの不具合(もしくはメモリの相性問題)が原因でした
現在4本刺しのメモリを2本刺し(シングルチャンネルにして絶賛稼働中)
4スロットのうちの1番と3番スロット.2番と4番スロットが
対になっていてデュアルチャンネルで起動できるようですが
メモリの相性が悪いのか組み合わせでうまく起動させることができないため1番と2番でシングルチャンネルにして使っています
...いちどマザーボードのお掃除がしたいなぁ




 久しぶりの更新です 備忘録 使っているarchlinuxにnvidiaのドライバを入れたところドライバがあっていなかったのかxが起動せずこれをアンインストールしたがその後xf86-video-nouveauが入っているにもかかわらずxが起動しなくなったのでarchwikiにて調...