えくすとらんのブログ: archlinux
ラベル archlinux の投稿を表示しています。 すべての投稿を表示
ラベル archlinux の投稿を表示しています。 すべての投稿を表示

brotherprinterがarchlinuxで使えなくなったが使えるようになった話

ハードディスクを換装しあたらしいarch環境でブラザー製の複合機の

プリンター機能を使いたくセッティングした

詳しくはこちらを参考にさせてもらった

いざプリントしてみるとcupsも正常に起動しネットワークプリンターもcupsから見えている状態
接続にAppSocket/HP JetDirect
socket://192.168.○.○:9100 を設定
テストページを印刷してみるとジョブも正常終了するがプリンターが動かない

こちらで書いておられるようにlib32-glibc(multilibをpacman.confにて設定必要)

をインストールしcupsを再起動

sudo systemctl restart org.cups.cupsd.service

もう一度設定し直してみると今度は無事にテストページを印刷した



一応...備忘録





パソコンの挙動がおかしかったのでマザーボードの電池交換

ポンコツなのはパソコンか自分か?

ダントツにコスパの良い旧型中古自作PCをくみあげた

ちなみに今使っているのは当時1300円のLGA775マザーボードに

core2quadをとりつけたもの

最近 なぜかパソコンの挙動がいたるところでおかしかった

症状はタスク処理中に固まってしまったり異常に起動がおそくなったり

アクセスランプが点きっぱなしになったりとか....

疑ったのはソフト、メモリ、ハードディスク、マザーボードなどだ

作業途中にハードディスクが回りっぱなしになったりしていたのでハードディスクも

うたがっていたのだが他のパソコンに換装してみるとうまくうごいているようだ

メモリ関係でトラブルがでることもある

デュアルチャンネルで動かす場合などメモリ同士の相性などで誤作動する場合が

あるし挿し方が悪いとこれも原因となったことがある

ということで一応一本挿しにしてみたり違うものを使ってみたりしたのだがやはり

おかしい

着眼したのはbiosの立ち上がりが悪くなっていたことで

biosがメモリを読み込んだあとにデバイス周りのよみこみがおそかった

これはもうマザーボード交換時期なのかとおもっていたのだが

とりあえず最後の望みとしてcmosクリアと電池交換してみたところ

いまのところ非常に快適にうごいている

マザーボードも中古品を使うので次から組み上げる際に電池交換をまめに

しておこうとひそかにおもったのであった....



lxdeの仮想デスクトップの数を増やす(自分用備忘録)

備忘禄

環境はarchlinux

デフォルトの枚数が2枚になったのかな?

/home/usrname/.config/openbox/xde-rc.xml

<desktops>
  <number>3</number>(数字変える)
  <name>desktop 3</name>(名前を追加)
</desktops>

保存 logout→login

でいいとおもう



おや いつのまにやらなおってた

管理者権限でpcmanfmを開くと

ログアウトがまともにできなる現象がいつの間にやら直ってた

.....なにかしたのかなぁ

それともアップデートでなおったのかな

wheelグループの設定変えたような 変えなかったような
ほかにもなにかしたかなぁ...覚えてないや
まぁ直ったからよしとしよう

ははは また復活!

よくとまりますねぇTT

そして 一度止まると2,3ヶ月こちらの世界へ

帰ってくることができません

しかし その間も回線利用料や基本料金といった形で

しっかりと請求がくるわけで.....

まぁなんとか生還することができたわけですが....

やはり情報の取得が制限されるというのはかなりのストレス

ですね。。。そしてその間なにをやっていたかというと....

古いノートパソコンにarchlinuxをarchisoから完全オフライン

でインストールしてみたり....

#! /usr/bin/python3.7
import time
import sys
#時間を取得
time = time.localtime()
print("今日は" + str(time[0]) + "年" + str(time[1]) + "月" + str(time[2]) + "日です")
#元号年の計算
meiji= int(time[0])- 1867
taisyou= int(time[0])- 1911
syouwa= int(time[0])- 1925
heisei = int(time[0])- 1988
reiwa = int(time[0])-2018
#元号年出力
print("令和"+ str(reiwa)+ "年です")
print("**********************************")
print("明治"+ str(meiji)+ "年です(元年1868年)")
print("大正"+ str(taisyou)+ "年です(元年1912年)")
print("昭和"+ str(syouwa)+ "年です(元年1926年)")
print("平成"+ str(heisei)+ "年です(元年1989年)")
print("**********************************")
#選択
def seireki_gengou():
    choice_seireki = input("西暦を入れてください : ")
    meiji_se_ge = int(choice_seireki) - int(1867)
    taisyou_se_ge = int(choice_seireki) - int(1911)
    syouwa_se_ge = int(choice_seireki) - int(1925)
    heisei_se_ge = int(choice_seireki) - int(1988)
    reiwa_se_ge = int(choice_seireki) - int(2018)

    if int(choice_seireki) > int(1867) and int(choice_seireki) <= int(1911):
        print("明治"+ str(meiji_se_ge)+ "年です")
        input()
        sentaku()
    elif int(choice_seireki) > int(1911) and int(choice_seireki) <= int(1925):
        print("大正"+ str(taisyou_se_ge)+ "年です")
        input()
        sentaku()
    elif int(choice_seireki) > int(1925) and int(choice_seireki) <= int(1988):
        print("昭和"+ str(syouwa_se_ge)+ "年です")
        input()
        sentaku()
    elif int(choice_seireki) > int(1988) and int(choice_seireki) <= int(2018):
        print("平成"+ str(heisei_se_ge)+ "年です")
        input()
        sentaku()
    elif int(choice_seireki) > int(2018) :
        print("令和"+ str(reiwa_se_ge)+ "年です")
        input()
        sentaku()
    else:
        sentaku()
def gengou_choice():
    gengou_choice= str(input("番号 1-5 で選んでください:"))
    if gengou_choice == "1":
        print("明治が選ばれました")
        meiji_year = input("明治何年を調べますか?(数字):")
        meiji_seireki = int(meiji_year)+ int(1867)
        print("明治"+ str(meiji_year) +"年は西暦"+ str(meiji_seireki )+ "年です")
        input()
        sentaku()
    elif gengou_choice == "2":
        print("大正が選ばれました")
        taisyou_year = input("大正何年を調べますか?(数字):")
        taisyou_seireki = int(taisyou_year)+ int(1911)
        print("大正"+ str(taisyou_year) +"年は西暦"+ str(taisyou_seireki )+ "年です")
        input()
        sentaku()
    elif gengou_choice == "3":
        print("昭和が選ばれました")
        syouwa_year = input("昭和何年を調べますか?(数字):")
        syouwa_seireki = int(syouwa_year)+ int(1925)
        print("昭和"+ str(syouwa_year) +"年は西暦"+ str(syouwa_seireki )+ "年です")
        input()
        sentaku()
    elif gengou_choice == "4":
        print("平成が選ばれました")
        heisei_year = input("平成何年を調べますか?(数字):")
        heisei_seireki = int(heisei_year)+ int(1988)
        print("平成"+ str(heisei_year) +"年は西暦"+ str(heisei_seireki )+ "年です")
        input()
        sentaku()
    elif gengou_choice == "5":
        print("令和が選ばれました")
        reiwa_year = input("令和何年を調べますか?(数字):")
        reiwa_seireki = int(reiwa_year)+ int(2017)
        print("令和"+ str(reiwa_year) +"年は西暦"+ str(reiwa_seireki )+ "年です")
        input()
        sentaku()
    else:
        sentaku()

def sentaku():
    print("何を調べますか?")
    print("1: 元号から西暦")
    print("2: 西暦から元号")
    print("3: メニュー")
    print("4: 終了")
    print("***********************************")
    menu = str(input("番号 1- 4 で選んでください :"))
    if menu == "1":
        print("元号から西暦を計算します")
        print("1: 明治")
        print("2: 大正")
        print("3: 昭和")
        print("4: 平成")
        print("5: 令和")
        gengou_choice()
    elif menu == "2":
        print("西暦から元号年を計算します")
        seireki_gengou()
    elif menu == "4":
        sys.exit()
    else:
        sentaku()
sentaku()
gengou_choice()
seireki_gengou()
input()


ちょっと書いてみたりして遊んでました
これもclass使うともう少し簡潔にかけそうですが....
なにぶんにも専業農家.....
計算式とか不等号とか違っていたら教えてください
それではまた しばらくはつながっていられそう。。。。

ひとりごと nazeni arch

私の環境ではなぜだかこの間からpcmanfmをsudo起動すると

一般ユーザモード?(スタートメニューの電源メニューにシャットダウン. リブートが消える)

に落とされたあげくログアウトボタンでXクラッシュ

なんてことになってしまう

いろいろ調べてみて(xdg関係やusrs,suders,やらetc...)

いたが結局わからず直らなかったまあバグなんかだったら

アップデートで直るかもなどともおもいlxdeから

ほかのwmを使ってみることに

まずはopenboxこれはlxdeを抜いていなければそのまま

lxdmから選んで起動できたがやはりsudo でpcmanfmを起動すると

lxdmの画面が出てこない

なんだかちょっと凹んできたのでlxde自体をアンインストール

これで同梱されていたlxdmやpcmanfmなどが消えた


 
再起動後ログインするとカーソルは出ていない

xorgがうまくはいっていればstartxとコマンドをうてば

標準搭載のターミナル3つの画面がたちあるはず

一応これでもぜんぜんいいんだけど...

普段づかいなのでやっぱりちょっとアプリランチャーとかデスクトップとかほしい

ということで dwm jwm uwmなどをつぎつぎと試してみる

デスクトップマネージャをいれていないので

startx の自動起動に~/zloginを作って

[[ -z $DISPLAY && $XDG_VTNR -eq 1 ]] && exec startx

を記述

あとは各wmをひとつづつxinitrcに書いて起動させてみた

まあみんな軽くてよかった

chromiumbook作るならこんな感じで

つくるとよさそう.....

jwmにxfce4-panelなどをつけてみたりしてみたが

結局これなら普通にxfceいれたほうがいいなってことになって

DMにlightdmをいれてxfceを起動で落ち着きました



その際少し気づいたことですが

DMがない場合

xinitrcにfcitxを登録して起動させても

うまくmozcが動かなかった(なぜか直接入力というのができなかった)

DMをいれたらうまくfcitx-mozcをつかうことができた

まあ支離滅裂な文章ですがこんなもんで....(うゎてきとーTT)

またね








wmをメインとサブにわけてみた

普段使い(主にインターネット閲覧)には
openboxを使用
作業用にはconpiz+LXDEで使用
って感じにしてみた

違いはデスクトップを視覚的に使うかどうかと
スピードで
openboxでは開いてすぐにchromiumを開いて
使うようなときに...(ですのでこちらは余計な常駐プログラムなどは
極力起動させないようにします)
conpiz+lxdeではいろいろ開いて仮想デスクトップ
まで使った作業をするときになどに
DM(lxdm)にて切り替えて使うことにしました

ふだんはopenboxが増えてゆくかも...





pythonでRssリーダーを作ってみました

easyguiでRssフィーダーを作ってみました

OSはarchlinuxです
ワンファイルで起動します
テキストにコピー&ペーストで.pyファイルを作って
権限与えて実行してください

RSSのURLをいれて選ぶとニュースヘッドラインがならびます
気に入ったニュースを選ぶと標準ブラウザを立ち上げ
詳細を知ることができます

初回起動時'/home/user/Desktop/feedurl.txt'を作ります
*userはusernameですのでパスは好きなところに変えてください
RssのURLはテキストとしてどんどん上書き保存されます
がテキストファイルですのでいらなくなったら消したり
編集したりできるかと思います
なんとなくICEFEEDと名付けてみました

自動更新をつけるためにtimeをimportしていますが未実装です
ゆえに手動更新です
作成途中ですので割当のないボタンが存在しているかもしれません
へたの横好きですのでこのプログラムによって起こったいかなる
問題にも対処できませんのでよろしくおねがいします


#!/usr/bin/env python3.7
# -*- coding: utf-8 -*-
#import pdb; pdb.set_trace()
import feedparser
import easygui as ez
import webbrowser
import time
def main():
#RSsurlinput
    feed = ez.enterbox("rss,rdfのURLを入れてください","rssfeed")
#Rssfeedsave
    f = open('/home/user/Desktop/feedurl.txt','a')
    f.write(feed+ "\n")
    f.close()
#Rssfeedload
    f = open('/home/user/Desktop/feedurl.txt')
    line = f.read()
    lines1 = line.split("\n")
    f.close()
#feedURLchoice
    msg ="What is your feedurl?"
    title = "Ice feed"
    choices = []
    for i in lines1:
        choices.append(i)
    choice = ez.choicebox(msg, title, choices)
    rss = choice
    dic = feedparser.parse(rss)
    news = []
    for entry in dic.entries:
        title = entry.title
        link = entry.link
        news.append([title,link])
#newschoice
    choice = ez.choicebox(dic.feed.title,"RSS",news)
    front_page = choice.split(",")[1]
    url = front_page.lstrip(" ").rstrip("]").lstrip("'").rstrip("'")
#browseropen
    webbrowser.open(url, new=2, autoraise=True)
if __name__ == "__main__":
    main()


こんな感じになりました
やっぱり自動更新いるかなぁ....^^;

これは...... googlerとw3mでさっと知りたいことを取り出してみた

ターミナルからのコマンドラインから

google検索が使えるコマンドラインの

googlerを使ってみた

使ってみると結構使いやすい


↑の画面から数字を選ぶとデフォルトのwebブラウザが
起動するようだ

ただせっかくターミナルで検索をかけているのに
フルブラウザが開くまで待っているのはちょっとしたストレス
に感じた

環境変数のブラウザを w3mに変えることで
ターミナルのままテキストベースブラウザ
で情報を閲覧することができた

えくすとらんの場合はシェルにzshを使っているので.zshrcに

alias g="BROWSER=w3m googler -n 5"
alias gn="BROWSER=w3m googler -N -n 5"#こちらはニュース検索

を追加してgでgoogler起動。
検索をかけて番号を選ぶとw3mで結果が表示されるようにした

bashの場合は.bashrcに記述しとけばいいのかな?

googler+w3mはなんかいいとおもう!








もしかしたら.....archカーネルアップデートでエラーの事

カーネルインストールでエラーが出る原因に

思い当たるフシが出てきたのでちょっと_φ(・_・めもしとこう

えくすとらんのPCはyayでカーネルをアップグレードした場合に

(pacman  でもだとおもう)カーネル起動中に

CLIエラーてのがでてカーソルキーボードが動かなくなる

対処法としていままでarchisoでchrootをとって

initramfs-linux.imgとvmlinuz削除後

カーネルを再インストールすれば直っていた(このへんちょっと

ひっかかってる)

このエラーを放置しているのはいつかなおるだろう

いや 直してやるとおもっているからだ!

で 今日おもったのはもしかしたらgrubを

インストールしたパーティションが2つになってるのではないか?

ということを考えている

構成は /dev/sda1 を ブート領域

/dev/sda3 をシステム及びデータ領域として作った

(ちなみにsda2はswap)

のだが何らかの拍子に(多分grub再インストール)のときに

sda3にも/bootができてしまったのではないかと見ている

それでコンフリクトかなと思っているが

調べてないのでどうなのかは定かではない

ただ確実に本質に近づいているのではないかと思っている

対処はうーんどうすればいいだろう

sda3の/bootを消してsda1の/boot再構築

grub アンインストール

/sda1へgrub再インストールで

なおるのかなぁ
(ちょっとまだやる勇気がないな....)

時間があるときにやってみよ.....

追記 3/11
やってみましたがやはり効果はありませんでした
・・・・謎は深まるばかりです
syslinuxいれてみようかなぁ....





archupdateでカーネルバージョンアップが失敗する

カーネルアップデートするとエラーが出て

キーボード.マウスの入力を受け付けなくなる

問題ではどうやらcpioでの作成が

うまく行ってなかったのかなとおもう

アップデートの際
initramfs-linux-*.img
initramfs-linux-*-fallback.img
vmlinuz-linux*

というファイルが/bootにできているようですが

このファイルと実際のカーネルバージョンが違うと

エラーになるのかなぁ

なので...カーネルアップデートでエラーが出る場合は
(私の場合はインストールディスクを使ってchrootからやっています)


boot以下の
initramfs-linux-*.img
initramfs-linux-*-fallback.img
vmlinuz-linux*

を削除
もういちどカーネルとヘッダーをインストール
たぶんこの時点でmkinitcpioが行われているとおもうのだけれど失敗の場合は
mkinitcpioを手動で起動
新しく
initramfs-linux-*.img
vmlinuz-linux*
initramfs-linux-*-fallback.img


を作ればよいのではないかとおもっています(実行される方は自己責任にてお願いします えくすとらんは記事の実行によって起こったいかなるトラブルにも対処できません)

なぜアップデート時にimgやvmlinuzの作成が失敗するようになってしまったのか?とかどうやればもとに戻るのかなどと
疑問が残りますがひとまずカーネルアップデートはこの方法で最新にできるかなぁ








jigen2_4更新

  • コマンド実行日取得後の実行期間が30日はちょっとながいので7日くらいにしてみました(30日表示されると実行日が見えなかったので)
...このへんの設定はコンフィグファイルsave.txt作って直接編集にしたほうがよいのかもしれませんねぇ(編集可能な数値としてはsavetxtフォルダ階層情報・コマンド実行までの期間・実行日取得からの実行期間・起動してからのシャットダウンまでの時間.sudopass.シェルコマンド等...)

なんの計画もなしおもうがままにつくったので関数.classなども
使ってないですね(オブジェクト無思考・・・)
やはり関数など作っておくと後々”戻る”処理をするとき便利なのかもしれませんねぇ
次から考えてみよう...(直さないのか?)

今日はすずしくなったなぁ...






jigen2_3更新


とりあえず自分の環境ではうまく動作しているようですが

少し改良したほうが良さそうなところをみつけましたので

なおしてみました

  • saveファイルの場所をきちんと記述しました(どうやらちゃんとかかないと起動の仕方によってファイルの作成場所がかわってしまうようです(デフォルトはデスクトップにしてありますので任意の場所をopen関数各所フルパスで記述していただけるとよいかとおもいます
  • 初回起動時notuchだとセーブファイルがないのでエラーがでるようなので例外処理をいれてみました
起動のたびにコマンド実行日が近くなりますのでお気をつけください
倉庫に一応いれておきました



どうかな...





自分専用jigenpy

jigen2pyを

外付けデバイス削除専用で更新してみました

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)

たちあがりにウエイトをいれてみました
これでも早い場合は数字を変更してみてください
あと...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)



これを一応デスクトップに置いているので

デスクトップエントリーに記述

[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  )

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

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

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

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

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

自分用メモです

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

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

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

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

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

→(^^)ニコニコ

ということに・・

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

これを使ってみました

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

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

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

(RTC)が違うようです

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

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

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

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

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

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

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

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

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

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

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

成功しています

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

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

勝手に起動・勝手に

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






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