[Completed] [Q] Help With Shell Scripting - XDA Assist

I am trying to make a simple shell script and I am getting constant errors.
So i made a test.sh file and saved it in /data because /sdcard is excuetable protected.
The shell file contains:
#!/system/bin/sh
cd /sdcard
mkdir test
echo Done!
So then I typed the command chmod 777 /data/test.sh
And then /data/test.sh and it returned: tmp-mksh: /data/test.sh: No such file or directory
So then I tried running: sh /data/test.sh and it returned:
No such file or directoryrd
Done

skyguy126 said:
I am trying to make a simple shell script and I am getting constant errors.
So i made a test.sh file and saved it in /data because /sdcard is excuetable protected.
The shell file contains:
#!/system/bin/sh
cd /sdcard
mkdir test
echo Done!
So then I typed the command chmod 777 /data/test.sh
And then /data/test.sh and it returned: tmp-mksh: /data/test.sh: No such file or directory
So then I tried running: sh /data/test.sh and it returned:
No such file or directoryrd
Done
Click to expand...
Click to collapse
I'm not an expert on this, could be an issue with the proper access rights.
Here is a thread about a similar issue with shell scripting: Android Development and Hacking Android Software Development sl4a shell script help.
Maybe this can help already.
And here is a general guide for using shel scripts: [GUIDE] Basic Unix/Linux command to use with ADB SHELL
If you have further questions about this topic, best to post in the Android Development and Hacking > Android Q&A, Help & Troubleshooting forum.

Thread closed and thank you.

Related

[Q] adb shell in batch

Hi,
I'm making a batch file (*.bat) for myself to try make some things easier file where I enter commands with adb.exe.
The problem is, any code after 'adb shell' is not executed in the batch.
So if I had a batch with the following:
Code:
adb shell
su
'su' will not be executed and stays at '$'.
It seems like it's too deep for a batch file to enter codes.
I also tried pushing a sh with the same script and run it from adb but then all I get it permission denied.
I have also tried 'adb shell su' without any luck.
Anyone with a solution?
Anyone? Or how about a .rc file that gets su and runs commands...
Sent from my HTC
To execute a script, you can always push your script and then execute it:
Code:
adb push script /sdcard/script
adb shell sh /sdcard/script
As for the commands you have shown, keep in mind that su doesn't simply change the running shell's permissions or the like but creates a new child environment within its own shell. You leave your script and after the new shell has finished, you're back in your old environment and the script continues.
mizch said:
To execute a script, you can always push your script and then execute it:
Code:
adb push script /sdcard/script
adb shell sh /sdcard/script
As for the commands you have shown, keep in mind that su doesn't simply change the running shell's permissions or the like but creates a new child environment within its own shell. You leave your script and after the new shell has finished, you're back in your old environment and the script continues.
Click to expand...
Click to collapse
yes, is there any way to automate the script inside the shell and use exit to finally go back to the batch script.
Can you provide me with an example of what you want to achieve?
To execute shell commands from a batch, it doesn't matter if I have to push a script and execute it. It's so that I get su and automate commands after that. Like flash_image, remount, chmod etc..
you will need to use the 'adb shell command' ad 'sh' files
I am trying to create a unix script file that copies files from /dbdata/databases to another folder as a backup.
When I try running the script in adb shell as SU, I get
cd: can't cd to /dbdata/databases
This is on a rooted Captivate. Any help would be greatly appreciated!
Hi,
su -c "command" should do the job for you. You will need to enclose the whole of the command in quotes however, otherwise su will be expecting the command to execute, doing nothing.
Example: adb shell "su -c 'sqlite3 /data/data/my.db/databases/mydb.db < /sdcard/dump.sql'" (run from a Unix or Windows(?) shell). Notice the use of "" and ''.
(in this case dump.sql contains .dump, for instance)
Of course the sqlite3 command could be placed within another script on the android device.
Hope that helps.
I looked around a bit and found the answer.
The simple answer is, wrap the command
Code:
cp "source" "destination"
in double quotes!
Thank you grindingbob for the adb shell "su -c 'sh /mnt/sdcard/tmp/2.sh'" command.
No probs I was more referring to executing commands as a su without interacting with adb shell.
As a side-note, cp might not be a good idea, unless you're sure no db accessing is taking place at the same time.
I am pretty sure well as sure as a novice can be! The files I am backing up are log files, call history and text message history.
The results from running a unix script which contains
Code:
cp "/dbdata/databases/com.android.providers.contacts/contacts2.db" "/mnt/sdcard/tmp4/contacts2.db"
cp "/dbdata/databases/com.android.providers.telephony/mmssms.db" "/mnt/sdcard/tmp4/mmssms.db"
cp "/dbdata/databases/com.sec.android.provider.logsprovider/logs.db" "/mnt/sdcard/tmp4/logs.db"
are only the logs.db file is copied, the other two are not.
grindingbob said:
No probs I was more referring to executing commands as a su without interacting with adb shell.
As a side-note, cp might not be a good idea, unless you're sure no db accessing is taking place at the same time.
Click to expand...
Click to collapse
Permission issues for *.sh files from ADB
Dear All,
I have a 3.2 device with Root permissions & Busybox.
I created a sample *.sh file, Pushed to SDcard, and gave '777' Permissions. When i Try to run it from ADB shell its not working Any help...
CMD prompt Traces:
Step -1: Created a sh file
cat TAB.sh
#!/bin/sh
cd /data/data/com.android.gallery/shared_prefs
Step -2 Pushed the file to SDcard
# ls -l *.sh
ls -l *.sh
-rw-rw-r-- root sdcard_rw 56 2012-03-13 15:06 SP.sh
-rw-rw-r-- root sdcard_rw 62 2012-03-13 15:05 TAB.sh
Step -3 Gave 777 permission for *.sh files
# chmod 777 *.sh
chmod 777 *.sh
# ls -l
ls -l
-rw-rw-r-- root sdcard_rw 56 2012-03-13 15:06 SP.sh
-rw-rw-r-- root sdcard_rw 62 2012-03-13 15:05 TAB.sh
Execute permission not applied
Tried other operations, dint workout
Step 4 other options:
# chmod +X *.sh
chmod +X *.sh
Bad mode
# chmod +x *.sh
chmod +x *.sh
Bad mode
# chmod u+x *.sh
chmod u+x *.sh
Bad mode
Any Help?

[GUIDE] Basic Unix/Linux command to use with ADB SHELL

I am sure that many of the new people in here are not exactly sure how to use ADB under linux.
So Ive been reading the Evo 3D forum, and I found this really nice guide by vboyz103. You can find the thread HERE
All props go to vboyz103 for creating it, im just sharing it with you guys.
P.S. - I found it in the Android Development forum, so Im putting it in ours. If it does not belong here - MODs - please move it to General.
vboyz103 said:
So I have been reading quite a few threads here on XDA, and the one thing I noticed for noobs to linux/unix world is that they are struggling with some basic command once adb shell is gained. I decided to whip out this quick tutorial to help those noobs out to become more of an expert...like me...lol j/k
Here we go:
Prerequisites:
You must know how to invoke a adb shell command already to drop into your phone.
ALL commands in Unix/Linux are case sensitive
For more details, go to this ADB tutorial (very good one): http://forum.xda-developers.com/showthread.php?t=517874
Let's get going:
Once a shell is gained via adb, let's look at some of the basic commands you can do to navigate around the filesystem. Note: you must remove the double-quotes (") for the actual command.
Code:
"cd" = is change directory
to change to any directory, you type: cd dir_name (where dir_name is a full path)
Example: I want to go to /data/local/tmp in my phone, I would do
cd /data/local/tmp <hit ENTER>
You can also use the ".." to go UP one directory.
Example: I'm in /data/local/tmp and I want to go up to /data folder, a command would be: cd ../.. alternatively, if I do cd .. then i'll drop into /data/local folder instead.
Code:
"ls" = list files/directories
to list files/directories within a folder, the command should be:
ls <hit enter> => this will list all NON-HIDDEN file/directories within your CURRENT directory.
ls /data/local/tmp => this will list all NON-HIDDEN file/directories within /data/local/tmp directory.
ls -l => this will list all NON-HIDDEN file/directories within your CURRENT directory, plus additional details. Consider this is like a "Details" view in Windows Explorer.
ls -a => this will list all files/directories (including hidden files) within your CURRENT directory.
ls -la => this will list all files/directories (including hidden files) within your CURRENT directory, plus details.
Code:
"chmod" = change mode
Goes to wikipedia for more details: https://secure.wikimedia.org/wikipedia/en/wiki/Chmod
Most commonly used modes on android phones are:
"755" or "777".
So if you have a root.sh shell script that you downloaded from XDA, and uploaded to your phone and try to execute it with ./root.sh and it said "Permission denied". That means your script does not have the execute permission. You need to do:
chmod 755 root.sh <hit enter>
[B]IMPORTANT: There is *NO* negative sign (-) in front of the mode bit. So it is NOT chmod -755 root.sh[/B]
If you get a "File or directory not found" error, which means you are chmod-ing a file that doesn't exist in your current directory. To execute a chmod on root.sh in /data/local/tmp you do:
chmod 755 /data/local/tmp/root.sh
If you want to chmod an ENTIRE DIRECTORY and ALL files underneath it you do:
chmod -R 755 /data/local/tmp => this will set /data/local/tmp and ALL files/folders underneath it to be 755.
Code:
"chown" = change ownership
Go to wikipedia for details: https://secure.wikimedia.org/wikipedia/en/wiki/Chown
Most common used chown for android is: "root:root" or "root:shell"
Example: if you want to change ownership of root.sh to root:shell then you do:
chown root:shell root.sh
NOTE: the -R (recursive) option is also available for chown.
chown -R root:shell /data/local/tmp
Code:
"pwd" = print working directory
so when you are within a directory and you want to know which directory you are in, then you issue the command:
pwd <hit enter>
The system will reply back with the currently directory you are in.
I'll try to add more if I think of anything else useful, or if you have suggestions, please feel free to add.
Click to expand...
Click to collapse

[Q] /system/bin/sh: tcpdump: No such file or directory

I have generated a **tcpdump** file to run on an Android device using [this guide][not able to post the link here]. Instead of `Fedora`, I made this file on `Ubuntu 12.04` .
Everything worked smoothly and **tcpdump** file was produced correctly. I copied `tcpdump` file at `/system/bin/` on Nexus-5 and ran following commands.
> adb shell
# ln -s /system/bin/tcpdump /system/xbin/tcpdump
# chmod 06755 /system/xbin/tcpdump
# reboot
After restarting computer, when I run `> adb shell tcpdump -h` , I get following error:
/system/bin/sh: tcpdump: No such file or directory
Can someone help me figure out the problem? Thanks!

[Q] Help! Problem with Tablet Olidata WB7-l

Hi! I'm a noob user, with a weird tablet.
The brand is Olidata (Chile), and the model is Wb7-l. The first problem was that the tipycal: many worng pattern attempts. I though about the usual: hard reset, but this weird tablet doesn't have one!So I tried all button combinations to enter th the hard reset menu, but was unuseful.
Then, I found a post, it said that with a program I could put anoter ROM (PhoenixSuite), and with the ADB Drivers. I could put another ROM, but the touch system doesn't work. Then I searched a second and a Third ROM, but was the same. Then, I remembered that the chip was a A13, and I found another post, where a user said that with a script you could fix that problem. I use the script and... it died :crying: . After that, i tried to connect it to the computer again, but I couldn't.
THEN, i read the script. Now, i'm really really afraid, because maybe the Tablet is dead.
Here's the script:
(I open it with notepad)
@ECHO off
echo Remount
adb remount
adb shell cd /
echo Mount root
adb shell mount -o remount,rw -t ext4 /dev/root /
echo Make dir bootfs
adb shell mkdir bootfs
echo Mount bootfs
adb shell mount -t vfat /dev/block/nanda /bootfs
echo Copy script.bin
adb push "script.bin" /bootfs/script.bin
echo Copy script0.bin
adb push "script.bin" /bootfs/script0.bin
echo Copy zet6221.ko to /system/vendor
adb push "zet6221.ko" /system/vendor/zet6221.ko
adb shell chmod 644 /system/vendor/zet6221.ko
echo Copy zet6221_ts.idc to /system/usr/idc
adb push "zet6221_ts.idc" /system/usr/idc/zet6221_ts.idc
adb shell chmod 644 /system/usr/idc/zet6221_ts.idc
echo Copy preinstall.sh
adb push "preinstall.sh" /system/bin/preinstall.sh
adb shell chmod 755 /system/bin/preinstall.sh
echo Copy setupsensors.sh
adb push "setupsensors.sh" /system/bin/setupsensors.sh
adb shell chmod 755 /system/bin/setupsensors.sh
pause
adb shell reboot
How can I undo what I did? What's the right ROM? (The other one was one called F1(A13)-20121129.1.1.1- )
Please, please help
(Sorry for my weird english, I know just a bit )

[Completed] [Q] Batch file commands help

So I am trying to make a batch file that automatically flashes a custom bootanimation from my computer and I am having trouble with these commands.
adb wait-for-device shell "su -c 'ls /system/media'"
adb wait-for-device shell "su -c 'mount -o rw,remount -t yaffs2 /dev/block/mtdblock1 /system'"
adb wait-for-device shell "su -c 'rm /data/media/bootanimation.zip1'"
Bascially I want to have the adb shell enter superuser mode, remount system in read write mode and delete the existing bootanimation.zip
Whenever I try and run this it says permission denied.
Please post your question in Android General so that the right experts may be of help.
Thread Closed. Thank you.

Categories

Resources