0

この同じ問題は、 Unix & Linux StackExchange コミュニティに投稿された質問でより適切に定式化されています。

キーを押すと開き、新しいターミナル(gnome-terminal)を開き、scrot(スクリーンショットツール)を実行し、ランダムな名前で写真をディレクトリに保存し、pomf.catにアップロードしてリンクをコピーするスクリプトをプログラミングしていますクリップボード。

これはうまくいきます。私が今やろうとしているのは、アップロードが完了したら、ターミナルを閉じることです。

私のスクリプトは次のように機能します:

ショートカット (PrtScr) -> gnome-terminal -e "python path/to/script.py" -> Scrot を開始 -> ファイルを保存 (ファイルへのパスを記憶) -> bash script2.sh path/to/picture -> アップロードpomf.cat へ -> リンクを取得 -> 「xclip -selection clipboard」でクリップボードに入れる

文字列をクリップボードに入れた後にターミナルを閉じたいので、これを追加しました:

eval $(printf $link | xclip -selection clipboard && sleep 1 && pkill terminal)

これの問題は、クリップボードに何もコピーされず、端末が閉じられることです。

ただし、「&& sleep 1 && pkill terminal」がないと、リンクはコピーされますが、ターミナルは開いたままになります。

前もって感謝します。

//編集

最初のスクリプト (scrot の実行用)

#!/usr/bin/env python
import os
import uuid
import time

def rstring(string_length=10):
    random = str(uuid.uuid4())
    random = random.upper()
    random = random.replace("-","")
    return random[0:string_length]

randomString = rstring(16)

os.system("scrot -s -q 100 /home/timon/screenshots/" + randomString + ".jpg")

while True:
    processRead = os.popen("ps aux | grep \"scrot -s\" | cat").read()
    if "scrot -s" not in processRead:
        time.sleep(1)
    else:
        break
        system.sleep(3)

os.system("/home/timon/.screenshot_stuff/./screen.sh /home/timon/screenshots/" + randomString + ".jpg")

2 番目のスクリプト (スクリーンショットのアップロード用)

#!/usr/bin/env bash

dest_url='https://cuntflaps.me/upload.php'
return_url='https://a.cuntflaps.me'

if [[ -n "${1}" ]]; then
    file="${1}"
    if [ -f "${file}" ]; then
        printf "Uploading ${file}..."
        my_output=$(curl --silent -sf -F files[]="@${file}" "${dest_url}")
        n=0  # Multipe tries
        while [[ $n -le 3 ]]; do
            printf "try #${n}...\n"
            if [[ true ]]; then
                return_file=$(echo "$my_output" | grep "url" |  sed 's/\,//g' | sed 's/\\//g' | sed 's/\"//g' | sed 's/\url://g' | tr -d ' ')
                printf 'done.\n'
                break
            else
                printf 'failed.\n'
                ((n = n +1))
            fi
        done
            printf "$return_file" | xclip -selection clipboard && pkill terminal
    else
        printf 'Error! File does not exist!\n'
        exit 1
    fi
else
    printf 'Error! You must supply a filename to upload!\n'
    exit 1
fi
4

1 に答える 1