Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1952)

Unified Diff: bin/crosh

Issue 2733001: initial add of chromeos shell and cros-term (Closed) Base URL: ssh://git@chromiumos-git//window_manager.git
Patch Set: chmod +x cros-term Created 10 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« bin/cros-term ('K') | « bin/cros-term ('k') | bin/crosh-dev » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: bin/crosh
diff --git a/bin/crosh b/bin/crosh
new file mode 100755
index 0000000000000000000000000000000000000000..da1ed00f9cf994bb63504c4cfb8535af6075a777
--- /dev/null
+++ b/bin/crosh
@@ -0,0 +1,128 @@
+#!/bin/bash
Will Drewry 2010/06/08 15:11:15 Make sure that you add bash to a dependency somewh
+# Copyright (c) 2009-2010 The Chromium OS Authors. All rights reserved.
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+HELP='
+ help
+ Display this help
+
+ exit
+ Exit crosh
+
+ ssh <user> <host> [<port>]
+ Open an ssh connection to the given <host>, as <user>. The <port> parameter
+ is optional and defaults to 22.
+'
+
+if [ "$1" == "--dev" -o -f "/root/.dev_mode" ]; then
Will Drewry 2010/06/08 15:11:15 can we _not_ encode /root/.dev_mode here too or do
+ . "$(dirname "$0")/crosh-dev"
+fi
+
+function cmd_help() {
+ echo "$HELP"
+}
+
+function cmd_exit() {
+ exit
+}
+
+function cmd_ssh() {
+ local user="$1"
+ local host="$2"
+ local port="${3:-22}"
+
+ if [ -z "$user" ]; then
+ echo "Missing required parameter: user"
+ return
+ elif ! check_username "$user"; then
+ echo "Invalid user: $user"
+ return
+ fi
+
+ if [ -z "$host" ]; then
+ echo "Missing required parameter: host"
+ return
+ elif ! check_hostname "$host"; then
+ echo "Invalid host: $host"
+ return
+ fi
+
+ if [ ! -z "$port" ]; then
+ if ! check_digits "$port"; then
+ echo "Invalid port: $port"
+ return
+ fi
+ fi
+
+ echo "open: host: $host, user: $user, port: $port"
+ ssh -p "$port" "$user@$host"
+}
+
+function dispatch() {
+ local line="$1"
+ local command=""
+ local params=""
+
+ local space_pos=$(expr index "$line" ' ')
+
+ if [ $space_pos == 0 ]; then
+ command=$line
+ else
+ command=${line:0:$((space_pos - 1))}
+ params=${line:$space_pos}
+ fi
+
+ if [ -z $(typeset -F "cmd_$command") ]; then
+ echo "Unknown command: '$command'"
+ else
+ command="cmd_$command"
+ $command $params
+ fi
+}
+
+# Checks that a given string starts with an alphanumeric, and contains only
+# alphanumeric, '.' or '-' characters
+function check_hostname() {
+ expr "$1" : '^[[:alnum:]][[:alnum:].\-]*$' > /dev/null
+}
+
+# Checks that a given string starts with an alphanumeric, and contains only
+# alphanumeric, '.' or '-' characters
+function check_hostname() {
Will Drewry 2010/06/08 15:11:15 two check_hostnames? :)
+ expr "$1" : '^[[:alnum:]][[:alnum:].\-]*$' > /dev/null
+}
+
+# Checks that a given string starts with an alphanumeric, and contains only
+# alphanumeric and zero or more of ".~%$^\-"
+function check_username() {
+ expr "$1" : '^[[:alnum:]][[:alnum:].~%$^\-]*$' > /dev/null
Will Drewry 2010/06/08 15:11:15 Are these characters just to cover the weird overl
+}
+
+function check_digits() {
+ expr "$1" : '^[[:digit:].]*$' > /dev/null
Will Drewry 2010/06/08 15:11:15 Why is the dot in there?
+}
+
+function repl() {
+ echo "Welcome to crosh, type 'help' for a list of commands"
+ echo
+
+ while [[ 1 ]]; do
+ if read -p "crosh> " -e LINE_; then
+ if [ ! -z "$LINE_" ]; then
+ history -s "$LINE_"
+ dispatch "$LINE_"
+ fi
+ else
+ echo
+ return 1
+ fi
+ done
+}
+
+HISTFILE="$HOME/.ssh_history"
+history -r $HISTFILE
+
+repl
+
+history -w $HISTFILE
« bin/cros-term ('K') | « bin/cros-term ('k') | bin/crosh-dev » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698