AppleScript'in kabuk komut dosyası geçmişi günlüğe kaydeder mi?


7

do shell scriptŞifrelenmiş metin de dahil olmak üzere bazı bilgileri döndürmek için sık sık AppleScript'te (AS) komut kullanıyorum .

Böyle bir örnek:

set encrypted to (do shell script "echo 'my secret text' | openssl enc -aes-256-cbc -a -pass pass:Pass123")

Terminal'de çalıştırılırsa, bu komut geçmişe giriş yapar ve şunu yazarak görüntülenebilir: historydaha sonra Geri Dönüş tuşuna basın.

Sorun: Yukarıdaki örnek, düz metin şifresini parametre olarak içerir ve geçmişte (Terminal'de çalıştırıldığında) kolayca kopyalanıp şifreli dizgiyi ters çevirmek için kullanılabileceği, hiçbir bilgi gerekmeden gösterildiğini gösterir.

AppleScript'in log do shell script "history"komutu veri döndürmüyor . Aynı şekilde, historyterminalde komutu çalıştırmak - örnek şifreleme AS üzerinden çalıştırıldıktan sonra, AS terminali komutunu da bu tarihte göstermez. Sonuç olarak, AS komutunun açıkça farklı bir kabuktan geçtiğine inanmamı sağlıyor. Kabuğun her kullanıcı için farklı olduğunu (yani hesabımın başka bir hesabın terminal geçmişini göremediğini) bilmesi, soruyu izler.

Soru: Bu, herhangi bir zamanda macOS tarafından tutulan tarih ve kayıtların hiçbirinde AS komutunun kaydı olmadığı anlamına mı geliyor? Yoksa şifrelemenin tersine çevrilebileceği, okunabileceği, yorumlanabileceği ve bu nedenle şifreleyebileceği bir yere mi gömülmüş?

Her ne kadar düşündürücü ve düşünceye açık olsa da, soruların cevaplanabilir bir alanı içinde olduğunu düşünüyorum. Güvenlik açısından cevap ile ilgileniyorum ve terminalin AS ile komutları - terminalin geçmişle yaptığı gibi - nasıl / nerede / nerede kayıt yaptığını daha net bir şekilde görmeyi umuyorum .
Herkese teşekkürler.

Yanıtlar:


3

Eğer aşağıdaki çalıştırmak do shell script komutu içinde Senaryo Editör :

do shell script "set"

Aşağıda gösterilenler geri döndü.

Görüldüğü gibi, tarih ile ilgili kabuk değişkenleri yoktur ve bu nedenle daha uzun bir öyküyü kısaltmak için kaydedilmiş bir komut geçmişi yoktur .

Daha fazla okumak istiyorsanız , kılavuzdaki TARİH bölümüne bakın.bash

Ayrıca, diğer komut geçmişi Shell Değişkenleri, örneğin, HISTCONTROL , HISTFILE HISTFILESIZE , HISTIGNORE , HISTSIZE , HISTIGNORE , HISTSIZE ve HISTTIMEFORMAT gibi olabilir .


Ayrıca bir not, bir Run Shell Senaryo eylem bir in Otomatikleştirici iş akışı çalıştırılan, aynı ile aynı nedenden dolayı, hem de orada geçerlidir do shell script komuta içinde Senaryo Editör , hiçbir geçmişi ile ilgili kabuk değişkenleri ayarlanır.


Bir AppleScript komutundan set komutun çıktısı do shell script :

Apple_PubSub_Socket_Render=/private/tmp/com.apple.launchd.HPRIi1Tsop/Render
BASH=/bin/sh
BASH_ARGC=()
BASH_ARGV=()
BASH_EXECUTION_STRING=set
BASH_LINENO=()
BASH_SOURCE=()
BASH_VERSINFO=([0]=\"3\" [1]=\"2\" [2]=\"57\" [3]=\"1\" [4]=\"release\" [5]=\"x86_64-apple-darwin17\")
BASH_VERSION='3.2.57(1)-release'
DIRSTACK=()
EUID=501
GROUPS=()
HOME=/Users/me
HOSTNAME=mes-Mac.local
HOSTTYPE=x86_64
IFS='   
'
LOGNAME=me
MACHTYPE=x86_64-apple-darwin17
OPTERR=1
OPTIND=1
OSTYPE=darwin17
PATH=/usr/bin:/bin:/usr/sbin:/sbin
POSIXLY_CORRECT=y
PPID=4330
PS4='+ '
PWD=/
SHELL=/bin/bash
SHELLOPTS=braceexpand:hashall:interactive-comments:posix
SHLVL=1
SSH_AUTH_SOCK=/private/tmp/com.apple.launchd.WQb3vmbYE7/Listeners
TERM=dumb
TMPDIR=/var/folders/w0/lht0h70x06b8hdb5lx474pkc0000gn/T/
UID=501
USER=me
XPC_FLAGS=0x0
XPC_SERVICE_NAME=0
_=sh
__CF_USER_TEXT_ENCODING=0x1F5:0x0:0x0

HISTORYetkileşimli mermilerin bir özelliğidir. Kabuk komut dosyaları etkileşimli değildir ve HISTORYdevre dışı bırakılmıştır. do shell script "echo $-"Komut Dosyası Düzenleyicide ve ardından echo $-bir terminal oturumunda deneyin . Komut Dosyası Düzenleyicisi'nde çalıştırdığınızda eksik "i" yi not edin.
fd0

@ fd0, Bunu gösterdiğiniz için teşekkür ederiz. Cevabı değiştirdim, ancak bu kullanım durumunda kaydedilmiş komut satırı geçmişinin olmadığı gerçeğini değiştirmiyor .
user3439894
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.