我加入的功能到我的劇本,讓他們可以使用Kerberos身份驗證自動運行和執行時使用的安全協議的操作系統命令。我有我的功能工作的shell腳本,正是我想要的,但我有問題將其移植到我的Perl腳本中工作,因爲我是新的Perl。這是我的工作shell代碼,並試圖獲得在Perl相同的功能:perl的發行與定義的變量
#!/bin/sh
ticketFileName=`basename $0-$$` #set filename variable to name of script plus the PID
krb5CacheLocation=/tmp/$ticketFileName #set ticket cache location to /tmp + script name
/usr/share/centrifydc/kerberos/bin/kinit -c $krb5CacheLocation -kt /root/.ssh/someaccount.keytab someaccount #get TGT and specifiy ticket cache location on kinit
export KRB5CCNAME=$krb5CacheLocation #set the KRB5CCNAME variable to tell ssh where to look
我曾試圖用Perl:
#!/usr/bin/perl
my $ticketFileName = `basename $0-$$`;
my $krb5CacheLocation = '/tmp/'.$ticketFileName;
`export KRB5CCNAME=$krb5CacheLocation`;
`/usr/share/centrifydc/kerberos/bin/kinit -c $krb5CacheLocation -kt /root/.ssh/someaccount.keytab someaccount`;
看來,這是不喜歡我我引用了傳遞的變量OS命令。任何人有任何想法或建議?
您還沒有以相同的順序執行這些命令。 –
是什麼讓你認爲Perl認爲'$ 0'和'$$'是shell變量? – TLP
順便說一句,你應該比「不喜歡」更好地描述你的問題。 '嚴格使用;使用警告;',調試打印語句,你告訴我們出了什麼問題。 – TLP