2012-01-06 12 views
21

के माध्यम से रूट के रूप में एक स्क्रिप्ट लॉन्च करें मैंने विभाजन को माउंट करने और मेरे एंड्रॉइड सिस्टम में कुछ सामान करने के लिए एक स्क्रिप्ट बनाई है। मैंने स्क्रिप्ट को Android के/bin फ़ोल्डर में install.sh के रूप में सहेजा।एडीबी

मैं एडीबी से स्क्रिप्ट को कॉल करना चाहता हूं, जिसे विंडोज़ पर बैच फ़ाइल से ही बुलाया जाता है, लेकिन इसे रूट के रूप में निष्पादित करने की आवश्यकता है।

पहला समाधान मैंने कोशिश की

adb shell "su -c sh /bin/script.sh" 

का उपयोग कर स्क्रिप्ट कॉल करने के लिए था, लेकिन के रूप में यह मेरे लिए एक खोल पहुँच देता है (रूट अनुमति के साथ) यह काम नहीं करता, लेकिन कुछ भी निष्पादित किया जाता है। मैं भी

adb root "sh /bin/script.sh" 

कॉल करने की कोशिश, लेकिन मैं निम्नलिखित त्रुटि मिली

adbd cannot run as root in production builds 

मैं तो सभी आदेशों जो मेरी स्क्रिप्ट में एक रूट पहुँच की आवश्यकता के लिए

su -c "command" 

लिखने का प्रयास किया , लेकिन मुझे एक ही समस्या है। जब मैं स्क्रिप्ट चलाता हूं तो मुझे केवल रूट खोल प्राप्त होता है और कुछ भी निष्पादित नहीं होता है।

यदि मैं हाथ से पहले समाधान का उपयोग करता हूं (उदा। मैं एडीबी शैल सु, फिर मेरी स्क्रिप्ट कहता हूं), यह काम करता है। हालांकि पूरा बिंदु प्रक्रिया को स्वचालित करना है, ताकि एडब खोल को दूसरी स्क्रिप्ट से बुलाया जा सके।

क्या आपको कोई विचार है कि मैं इसे कैसे प्राप्त कर सकता हूं?

धन्यवाद!

उत्तर

50

यह मेरे लिए काम करता है:

myscript.bat बनाएँ और (सुपर उपयोगकर्ता मोड में निष्पादित करने के लिए ध्यान दें आदेशों के आसपास एकल उद्धरण) यह में डाल दिया:

adb shell "su -c 'command1; command2; command3'" 

तो myscript चलाने एक डॉस खोल से .bat।

नोट: ऐसा नहीं लगता है कि डॉस लाइन निरंतरता चरित्र (^) इस स्थिति में काम करता है। दूसरे शब्दों में, निम्नलिखित मेरे लिए काम नहीं करता है:

adb shell "su -c '^ 
command1;^
command2;^
command3'" 

इस में जो परिणाम "सिंटैक्स त्रुटि: असमाप्त उद्धृत स्ट्रिंग"

+0

यह मेरे सैमसंग नोट 4 एक्सिनोस संस्करण, सिस्टम संस्करण एंड्रॉइड 4.4 पर आश्चर्यजनक रूप से काम करता है। मैंने पूरे दिन समाधान के लिए ऑनलाइन खोज की है। भगवान का शुक्र है, मैं अंत में इस पोस्ट को पढ़ा। यह काम करता हैं। रूटएडब गैलेक्सी नोट 10.1 टैबलेट पर काम करता था, लेकिन यह इस नोट 4 के लिए और भी काम नहीं करता है। एंड्रॉइड 7.1.1 पर –

+0

मैंने पाया कि डबल कोट्स के भीतर एकल कोट्स का उपयोग करके वास्तव में निष्पादन को गड़बड़ कर दिया गया। उन्हें हटाने के लिए सबकुछ अपेक्षित काम करना प्रतीत होता था। – MikeSchem

0

but it does not work as it gives me a shell access (with root permissions), but nothing is executed.

आप कैसे जानते हैं कि आपको रूट अनुमतियां दी गई हैं? मुझे लगता है कि आप किसी डिवाइस पर स्क्रिप्ट निष्पादित करने का प्रयास कर रहे हैं? क्या आपका डिवाइस रूट किया गया है?

आपको फ़ाइल में chmod के माध्यम से निष्पादन अनुमतियां देने की आवश्यकता हो सकती है।

chmod ugo=rwx /bin/script.sh 
+0

कुछ भी नहीं मार डाला है, लेकिन कंसोल, प्रदर्शित करता है एक खोल, जिन्हें मैं अपनी आदेशों टाइप कर सकते हैं, के साथ "#" जिसका अर्थ है कि मैं एक रूट पहुंच है। और हाँ, मेरा डिवाइस रूट है। मेरी स्क्रिप्ट में निष्पादन अनुमतियां भी हैं, लेकिन sh /bin/script.sh को कॉल करने के लिए इस अनुमति की आवश्यकता नहीं है, है ना? –

+0

आह, मुझे यह भी एहसास नहीं हुआ, लेकिन आप निष्पादन अनुमतियों की आवश्यकता नहीं होने के बारे में सही हैं। आप 'स्रोत /bin/script.sh' आज़मा सकते हैं और देख सकते हैं कि यह कोई अलग है (शायद नहीं)। – DavidDraughn

0

ऐसा लगता है कि मैं ये नही किया सु की एक बहुत ही सरल संस्करण का उपयोग कर रहा था -सी तर्क स्वीकार करें। मैंने एक और सु कॉपी किया जिसने काम किया।AndyD हालांकि पूरी तरह से सही है, इसलिए मैं अपने जवाब को स्वीकार कर रहा हूँ मेरा :)

+1

मेरा काम भी काम नहीं करता है। आपने अपनी जगह कहाँ से कॉपी की है? – barlop

1

यह काम करता है के बजाय:

adb shell echo command which needs root privileges \| su 

आप पुनर्निर्देशन की जरूरत है:

adb shell echo 'echo anytext > /data/data/aforbiddenfolder/file' \| su 

"नकल" एक स्थानीय फ़ाइल के लिए रूट विशेषाधिकारों की आवश्यकता होगी, एक Android पथ के लिए (लेकिन alocalfile ' शामिल नहीं करना चाहिए):

cat alocalfile | adb shell echo "echo '`cat`' > /data/data/aforbiddenfolder/file" \| su 

यदि आपके पास बेहतर तरीका है (यहां तक ​​कि su संस्करणों के लिए भी -c नहीं है), मुझे रूचि है।

1

यह मेरे लिए काम करता है:

adb shell "su -c ./data/local/tcpdump-arm -s 0 -v -w /data/local/appxpress_dump.pcap" 
+2

क्या इस आदेश के बारे में कुछ नया है जिसका पहले से उल्लेख नहीं किया गया है? – slhck

+0

डिवाइस कमांड के आसपास कोई एकल उद्धरण नहीं है। मैंने उन्हें हटा दिए जाने के बाद सबकुछ काम करना शुरू कर दिया। धन्यवाद। – balbelias

संबंधित मुद्दे