在gdm登录期间SSH代理PID初始化错误

时间:2017-07-21 07:04:32

标签: bash ssh ssh-agent .profile

我想在登录Ubuntu机器时启动ssh代理。所以我跟着http://mah.everybody.org/docs/ssh并在我的〜/ .profile中添加了以下代码。

#
# setup ssh-agent
#
# set environment variables if user's agent already exists
[ -z "$SSH_AUTH_SOCK" ] && SSH_AUTH_SOCK=$(ls -l /tmp/ssh-*/agent.* 2> /dev/null | grep $(whoami) | awk '{print $9}')
[ -z "$SSH_AGENT_PID" -a -z `echo $SSH_AUTH_SOCK | cut -d. -f2` ] && SSH_AGENT_PID=$((`echo $SSH_AUTH_SOCK | cut -d. -f2` + 1))
[ -n "$SSH_AUTH_SOCK" ] && export SSH_AUTH_SOCK
[ -n "$SSH_AGENT_PID" ] && export SSH_AGENT_PID

# start agent if necessary
if [ -z $SSH_AGENT_PID ] && [ -z $SSH_TTY ]; then  # if no agent & not in ssh
  eval `ssh-agent -s` > /dev/null
fi

# setup addition of keys when needed
if [ -z "$SSH_TTY" ] ; then                     # if not using ssh
  ssh-add -l > /dev/null                        # check for keys
  if [ $? -ne 0 ] ; then
    alias ssh='ssh-add -l > /dev/null || ssh-add && unalias ssh ; ssh'
    if [ -f "/usr/lib/ssh/x11-ssh-askpass" ] ; then
      SSH_ASKPASS="/usr/lib/ssh/x11-ssh-askpass" ; export SSH_ASKPASS
    fi
  fi
fi

现在当我登录Unity会话时,它给出了一个讨厌的错误弹出窗口,指示〜/ .profile中的第30行:

[ -z "$SSH_AGENT_PID" -a -z `echo $SSH_AUTH_SOCK | cut -d. -f2` ] && SSH_AGENT_PID=$((`echo $SSH_AUTH_SOCK | cut -d. -f2` + 1))

根据我的文字编辑。我试图寻找一个解决方案,有趣的是这个Start ssh-agent on login SO答案指向同一个网站,但另一个解决方案需要.bash_profile。问题是如果存在〜/ .bash_profile或〜/ .bash_login,我将忽略我的〜/ .profile,因为.profile包含一些更重要的初始化。我不明白这个表达有什么问题?

1 个答案:

答案 0 :(得分:0)

问题是第一个val regulators = serviceHub.networkMapCache.regulatorNodes if (regulators.isNotEmpty()) { // Copy the transaction to every regulator in the network. This is obviously completely bogus, it's just for demo purposes. regulators.forEach { send(it.serviceIdentities(ServiceType.regulator).first(), ftx) } } 中的private LayoutInflater layoutInflater; private List<AllAppList> listStorage; private Context mContext; ArrayList<WhiteListModel> newDataSet, existingDataSet; private String TAG = AppAdapter.class.getSimpleName(); private MySharedPreference sharedPreference; private WhiteListModel whiteListModel; private Gson gson; public AppAdapter(Context context, List<AllAppList> customizedListView) { layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); listStorage = customizedListView; this.mContext = context; existingDataSet = new ArrayList<>(); newDataSet = new ArrayList<>(); gson = new Gson(); sharedPreference = new MySharedPreference(mContext); whiteListModel = new WhiteListModel(); //retrieve data from shared preference String jsonScore = sharedPreference.getAppsArrayListData(); Type type = new TypeToken<ArrayList<WhiteListModel>>() { }.getType(); existingDataSet = gson.fromJson(jsonScore, type); } @Override public int getCount() { return listStorage.size(); } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(final int position, View convertView, ViewGroup parent) { final ViewHolder listViewHolder; if (convertView == null) { listViewHolder = new ViewHolder(); convertView = layoutInflater.inflate(R.layout.installed_app_list_item, parent, false); listViewHolder.textInListView = (TextView) convertView.findViewById(R.id.list_app_name); listViewHolder.imageInListView = (ImageView) convertView.findViewById(R.id.app_icon); listViewHolder.switchCompat = (SwitchCompat) convertView.findViewById(R.id.toggleButton); convertView.setTag(listViewHolder); } else { listViewHolder = (ViewHolder) convertView.getTag(); } listViewHolder.textInListView.setText(listStorage.get(position).getName()); listViewHolder.imageInListView.setImageDrawable(listStorage.get(position).getIcon()); for (int i = 0; i<existingDataSet.size(); i++){ for (int j= 0; j<listStorage.size(); j++){ if (existingDataSet.get(i).getPackName().equalsIgnoreCase(listStorage.get(j).getPackName())){ listViewHolder.switchCompat.setChecked(true); } } } listViewHolder.switchCompat.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(final CompoundButton buttonView, boolean isChecked) { if (isChecked) { new AlertDialog.Builder(mContext, R.style.AppCompatAlertDialogStyle).setTitle("Warning").setMessage("You want to whiteList this application?").setPositiveButton("YES", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //Adding items in Dataset AllAppList appList = listStorage.get(position); whiteListModel.setName(appList.getName()); whiteListModel.setPackName(appList.getPackName()); if (existingDataSet != null) { existingDataSet.add(whiteListModel); saveScoreListToSharedpreference(existingDataSet); } else { newDataSet.add(whiteListModel); saveScoreListToSharedpreference(newDataSet); } //Notifying adapter data has been changed..... notifyDataSetChanged(); listViewHolder.switchCompat.setChecked(false); } }).setNegativeButton("No", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { listViewHolder.switchCompat.setChecked(false); } }).show(); } } }); return convertView; } /** * Save list of scores to own sharedpref * * @param whiteListApps */ private void saveScoreListToSharedpreference(ArrayList<WhiteListModel> whiteListApps) { Gson gson = new Gson(); //convert ArrayList object to String by Gson String jsonScore = gson.toJson(whiteListApps); Log.e(TAG, "LIST::" + jsonScore); //save to shared preference sharedPreference.saveAppsArrayListData(jsonScore); } private static class ViewHolder { static SwitchCompat switchCompat; TextView textInListView; ImageView imageInListView; } 参数。

像这样改写它会起作用(仍然做同样的事情):

-a