普段の生活の中から大好きなパソコンや植物のことなどを書いています 最近ではyoutubeにも動画をアップしていますのでよかったらみてくださいませm(_ _)m https://www.youtube.com/user/xtoran1
自分専用jigenpy
jigen2pyを
外付けデバイス削除専用で更新してみました
ddコマンドでゼロ埋め処理をする(のはず)ようにしたので
デバイス名や実行日の入力を間違えると非常に危険です
55行目のsudopassをいれてください
デフォルトでsdb1が削除対象です
*実はまだ試していないのでコマンドが正常動作するのかどうなのかわかっていません(試すと今つけている外付けデバイスの中身がすべて消えるので他デバイスを用意しないと
だめですね^^;)
一応倉庫にjigen2_1.pyでおいてあります
えくすとらんはこのスクリプトによって起こったいかなる
トラブルにも対処できませんのであしからず...
外付けデバイス削除専用で更新してみました
ddコマンドでゼロ埋め処理をする(のはず)ようにしたので
デバイス名や実行日の入力を間違えると非常に危険です
55行目のsudopassをいれてください
デフォルトでsdb1が削除対象です
*実はまだ試していないのでコマンドが正常動作するのかどうなのかわかっていません(試すと今つけている外付けデバイスの中身がすべて消えるので他デバイスを用意しないと
だめですね^^;)
一応倉庫にjigen2_1.pyでおいてあります
えくすとらんはこのスクリプトによって起こったいかなる
トラブルにも対処できませんのであしからず...
jigen2py 更新
パソコンを自動起動させたところ
スクリプトの立ち上がりがあまりにも早く
デスクトップの環境が揃うまでにスクリプトが終わってしまう
ことに気づきました
#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp
print("しばらくおまちください")
#立ち上がりのウエイト設定
time.sleep(5)
#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run): ")
#インプット選択10秒間キー入力がなければマイナス一日
i, o, e = select.select( [sys.stdin], [], [], 10 )
if (i):
print("input", sys.stdin.readline().strip())
a = "y"
else:
print("notuch key")
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','r')
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秒後にソフトをキルします")
#起動後5時間後にPCをシャットダウン
cmd2 = "shutdown -h +300"
sp.call( cmd2, shell=True )
time.sleep(5)
スクリプトの立ち上がりがあまりにも早く
デスクトップの環境が揃うまでにスクリプトが終わってしまう
ことに気づきました
#!/usr/bin/python3.7
# -*- coding: utf-8 -*-
import datetime
import time
import sys, select
import subprocess as sp
print("しばらくおまちください")
#立ち上がりのウエイト設定
time.sleep(5)
#今日を取得
today = datetime.date.today()
print(today)
print("実行日を更新しますか?(y or notuch is run): ")
#インプット選択10秒間キー入力がなければマイナス一日
i, o, e = select.select( [sys.stdin], [], [], 10 )
if (i):
print("input", sys.stdin.readline().strip())
a = "y"
else:
print("notuch key")
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','r')
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秒後にソフトをキルします")
#起動後5時間後にPCをシャットダウン
cmd2 = "shutdown -h +300"
sp.call( cmd2, shell=True )
time.sleep(5)
たちあがりにウエイトをいれてみました
これでも早い場合は数字を変更してみてください
あと...savefileはpyfileと同じ階層にできるといっていたのですがどうやら/home/usrnameの下にできているようですので
一応訂正...ファイル名 .をつけて隠し属性にしたほうがいいのかなぁ?
まあ 必要なら...そのときに...
できた?!jigen2py
昨日の機能にシャットダウン機能を追加しました
#!/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 notuch is run): ")
#インプット選択10秒間キー入力がなければマイナス一日
i, o, e = select.select( [sys.stdin], [], [], 10 )
if (i):
print("input", sys.stdin.readline().strip())
a = "y"
else:
print("notuch key")
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秒後にソフトをキルします")
#起動後5時間後にPCをシャットダウン
cmd2 = "shutdown -h +300"
sp.call( cmd2, shell=True )
time.sleep(5)
#!/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 notuch is run): ")
#インプット選択10秒間キー入力がなければマイナス一日
i, o, e = select.select( [sys.stdin], [], [], 10 )
if (i):
print("input", sys.stdin.readline().strip())
a = "y"
else:
print("notuch key")
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秒後にソフトをキルします")
#起動後5時間後にPCをシャットダウン
cmd2 = "shutdown -h +300"
sp.call( cmd2, shell=True )
time.sleep(5)
これを一応デスクトップに置いているので
デスクトップエントリーに記述
[Desktop Entry]
Name=jigen2py
Exec=lxterminal -e python3.7 /home/xtoran/Desktop/jigen2.py
Type=Application
を/home/ユーザー名/.config/autostart
にjigen2py.desktopで保存(権限注意)
この設定ではスクリプト起動後5時間後にパソコンがシャットダウンします
えくすとらんの場合はbiostimer設定によって朝5時15分に
ブートしスクリプト初回手動起動30日後にコマンド実行の設定、
キー入力がなければ5時間後にシャットダウン・次の朝
オートでブート。スクリプト起動でキー入力なければ
29日後にコマンド実行と、コマンド実行日をマイナスしていきます
一応これでできたかなぁ^^
倉庫にpyファイルと記述済みデスクトップエントリーをいれておきました
もうすこし...
この前のpythonスクリプトを起動後パソコンのシャットダウンの
方法を考えていたのですが調べてみるといろいろあるようです
cronやatコマンドで時刻を設定する方法などがでてきました
しかし折角なのでスタートアップ登録した自動実行pyに
シャットダウンコマンド(起動時プラス時間で設定しておけば
オッケーなのかもと考えました
まだ実装と実験をしていませんのでうまく行くかどうかわかりませんが
うまくいけば勝手に起動・勝手にシャットダウン・決まった日にコマンド実行となり当初の計画どうりの挙動になるかとおもっています
最近ちょっと気になっているのはクリップボードマネージャ
なのですがもっと簡単に定型文が使えるソフトがあればいいのになぁなんて思っています(スニペットっていうのかなぁ)
クリップボード登録した定型文を右クリックから頭文字で候補出力!(まあえくすとらんにはつくれないでしょうけど・・・)
そんなのあるよって方はぜひ教えてください^^
起動時自動実行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 )
起動する方法を調べてメモさせてもらいました
それもこれも実はいわゆる遺言ソフトといわれるものを
作ってみたかったというのがあって自分にもしものことが
あったときに自動でコマンド..あるいはソフトを起動できたら
いいのになぁとおもっていました
で・・・一応それらしいのを書いてみました
#!/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)
のところはコメントにしてあります
一応 lsなんて書いてみましたがrmやddなどのコマンドを
使うと更新がなくなってから○日後にファイルやフォルダを
消すなんて使い方ができることを想定して作っています
権限あり(shell実行):
sp.call('echo "pass" | sudo -S command',shell=True)
スタートアップで起動するたびに一日づつ実行日が減っていきます
データセーブの為にテキストファイル(jigensave.txt)
をpyファイルと同じ階層に
吐き出します(中身は”何日後”が数字で入っています。作成のあとは起動のたびにマイナスされる数字を上書きしていきます)
データセーブの為にテキストファイル(jigensave.txt)
をpyファイルと同じ階層に
吐き出します(中身は”何日後”が数字で入っています。作成のあとは起動のたびにマイナスされる数字を上書きしていきます)
素人がなにもわからずに作っているものですので使用の際は
精査の上お使いください
またプログラムで起こったいかなるトラブルにも対応できませんのでよろしくおねがいします
自分用メモです
登録:
投稿 (Atom)
久しぶりの更新です 備忘録 使っているarchlinuxにnvidiaのドライバを入れたところドライバがあっていなかったのかxが起動せずこれをアンインストールしたがその後xf86-video-nouveauが入っているにもかかわらずxが起動しなくなったのでarchwikiにて調...
-
スプライトの座標確認と ウインドウの端についたら反対側から出てくるようにしてみた #!/usr/bin/python # -*- coding: utf-8 -*- import pyglet from pyglet.window import mouse f...
-
前のブログでのアクセスが一番多かった記事です(文字のみ) またアップしてみました 記事が古いので現在の仕様とことなる場合があるかもしれません AUTHOR: xtoran TITLE: lubuntuファイルマネージャーを管理者権限でたちあげてみた ...
-
1〜6のキーが押されたときは魔法を発動 それ以外のキーが押されたらもう一度インプットを促す ようなものが出来たらいいなと思っていたのですが... 結局関数def jyumon()で処理をくくって elseの行で戻してやることにしました 数字のインプットには...